crypto/pem/pem_lib.c:418: error: UNINITIALIZED_VALUE
  The value read from j was never initialized.
Showing all 1 steps of the trace


crypto/pem/pem_lib.c:418:3: 
416.   		if (ret == 0)
417.   			goto err;
418. > 		i+=j;
419.   		}
420.   	else

int PEM_ASN1_write_bio(i2d_of_void *i2d, const char *name, BIO *bp,
		       void *x, const EVP_CIPHER *enc, unsigned char *kstr,
		       int klen, pem_password_cb *callback, void *u)
	{
	EVP_CIPHER_CTX ctx;
	int dsize=0,i,j,ret=0;
	unsigned char *p,*data=NULL;
	const char *objstr=NULL;
	char buf[PEM_BUFSIZE];
	unsigned char key[EVP_MAX_KEY_LENGTH];
	unsigned char iv[EVP_MAX_IV_LENGTH];
	if (enc != NULL)
		{
		objstr=OBJ_nid2sn(EVP_CIPHER_nid(enc));
		if (objstr == NULL)
			{
			PEMerr(PEM_F_PEM_ASN1_WRITE_BIO,PEM_R_UNSUPPORTED_CIPHER);
			goto err;
			}
		}
	if ((dsize=i2d(x,NULL)) < 0)
		{
		PEMerr(PEM_F_PEM_ASN1_WRITE_BIO,ERR_R_ASN1_LIB);
		dsize=0;
		goto err;
		}
	data=(unsigned char *)OPENSSL_malloc((unsigned int)dsize+20);
	if (data == NULL)
		{
		PEMerr(PEM_F_PEM_ASN1_WRITE_BIO,ERR_R_MALLOC_FAILURE);
		goto err;
		}
	p=data;
	i=i2d(x,&p);
	if (enc != NULL)
		{
		if (kstr == NULL)
			{
			if (callback == NULL)
				klen=PEM_def_callback(buf,PEM_BUFSIZE,1,u);
			else
				klen=(*callback)(buf,PEM_BUFSIZE,1,u);
			if (klen <= 0)
				{
				PEMerr(PEM_F_PEM_ASN1_WRITE_BIO,PEM_R_READ_KEY);
				goto err;
				}
#ifdef CHARSET_EBCDIC
			ebcdic2ascii(buf, buf, klen);
#endif
			kstr=(unsigned char *)buf;
			}
		RAND_add(data,i,0);
		OPENSSL_assert(enc->iv_len <= (int)sizeof(iv));
		if (RAND_pseudo_bytes(iv,enc->iv_len) < 0)
			goto err;
		if (!EVP_BytesToKey(enc,EVP_md5(),iv,kstr,klen,1,key,NULL))
			goto err;
		if (kstr == (unsigned char *)buf) OPENSSL_cleanse(buf,PEM_BUFSIZE);
		OPENSSL_assert(strlen(objstr)+23+2*enc->iv_len+13 <= sizeof buf);
		buf[0]='\0';
		PEM_proc_type(buf,PEM_TYPE_ENCRYPTED);
		PEM_dek_info(buf,objstr,enc->iv_len,(char *)iv);
		EVP_CIPHER_CTX_init(&ctx);
		ret = 1;
		if (!EVP_EncryptInit_ex(&ctx,enc,NULL,key,iv)
			|| !EVP_EncryptUpdate(&ctx,data,&j,data,i)
			|| !EVP_EncryptFinal_ex(&ctx,&(data[j]),&i))
			ret = 0;
		EVP_CIPHER_CTX_cleanup(&ctx);
		if (ret == 0)
			goto err;
		i+=j;
		}
	else
		{
		ret=1;
		buf[0]='\0';
		}
	i=PEM_write_bio(bp,name,buf,data,i);
	if (i <= 0) ret=0;
err:
	OPENSSL_cleanse(key,sizeof(key));
	OPENSSL_cleanse(iv,sizeof(iv));
	OPENSSL_cleanse((char *)&ctx,sizeof(ctx));
	OPENSSL_cleanse(buf,PEM_BUFSIZE);
	if (data != NULL)
		{
		OPENSSL_cleanse(data,(unsigned int)dsize);
		OPENSSL_free(data);
		}
	return(ret);
	}
["int PEM_ASN1_write_bio(i2d_of_void *i2d, const char *name, BIO *bp,\n\t\t       void *x, const EVP_CIPHER *enc, unsigned char *kstr,\n\t\t       int klen, pem_password_cb *callback, void *u)\n\t{\n\tEVP_CIPHER_CTX ctx;\n\tint dsize=0,i,j,ret=0;\n\tunsigned char *p,*data=NULL;\n\tconst char *objstr=NULL;\n\tchar buf[PEM_BUFSIZE];\n\tunsigned char key[EVP_MAX_KEY_LENGTH];\n\tunsigned char iv[EVP_MAX_IV_LENGTH];\n\tif (enc != NULL)\n\t\t{\n\t\tobjstr=OBJ_nid2sn(EVP_CIPHER_nid(enc));\n\t\tif (objstr == NULL)\n\t\t\t{\n\t\t\tPEMerr(PEM_F_PEM_ASN1_WRITE_BIO,PEM_R_UNSUPPORTED_CIPHER);\n\t\t\tgoto err;\n\t\t\t}\n\t\t}\n\tif ((dsize=i2d(x,NULL)) < 0)\n\t\t{\n\t\tPEMerr(PEM_F_PEM_ASN1_WRITE_BIO,ERR_R_ASN1_LIB);\n\t\tdsize=0;\n\t\tgoto err;\n\t\t}\n\tdata=(unsigned char *)OPENSSL_malloc((unsigned int)dsize+20);\n\tif (data == NULL)\n\t\t{\n\t\tPEMerr(PEM_F_PEM_ASN1_WRITE_BIO,ERR_R_MALLOC_FAILURE);\n\t\tgoto err;\n\t\t}\n\tp=data;\n\ti=i2d(x,&p);\n\tif (enc != NULL)\n\t\t{\n\t\tif (kstr == NULL)\n\t\t\t{\n\t\t\tif (callback == NULL)\n\t\t\t\tklen=PEM_def_callback(buf,PEM_BUFSIZE,1,u);\n\t\t\telse\n\t\t\t\tklen=(*callback)(buf,PEM_BUFSIZE,1,u);\n\t\t\tif (klen <= 0)\n\t\t\t\t{\n\t\t\t\tPEMerr(PEM_F_PEM_ASN1_WRITE_BIO,PEM_R_READ_KEY);\n\t\t\t\tgoto err;\n\t\t\t\t}\n#ifdef CHARSET_EBCDIC\n\t\t\tebcdic2ascii(buf, buf, klen);\n#endif\n\t\t\tkstr=(unsigned char *)buf;\n\t\t\t}\n\t\tRAND_add(data,i,0);\n\t\tOPENSSL_assert(enc->iv_len <= (int)sizeof(iv));\n\t\tif (RAND_pseudo_bytes(iv,enc->iv_len) < 0)\n\t\t\tgoto err;\n\t\tif (!EVP_BytesToKey(enc,EVP_md5(),iv,kstr,klen,1,key,NULL))\n\t\t\tgoto err;\n\t\tif (kstr == (unsigned char *)buf) OPENSSL_cleanse(buf,PEM_BUFSIZE);\n\t\tOPENSSL_assert(strlen(objstr)+23+2*enc->iv_len+13 <= sizeof buf);\n\t\tbuf[0]='\\0';\n\t\tPEM_proc_type(buf,PEM_TYPE_ENCRYPTED);\n\t\tPEM_dek_info(buf,objstr,enc->iv_len,(char *)iv);\n\t\tEVP_CIPHER_CTX_init(&ctx);\n\t\tret = 1;\n\t\tif (!EVP_EncryptInit_ex(&ctx,enc,NULL,key,iv)\n\t\t\t|| !EVP_EncryptUpdate(&ctx,data,&j,data,i)\n\t\t\t|| !EVP_EncryptFinal_ex(&ctx,&(data[j]),&i))\n\t\t\tret = 0;\n\t\tEVP_CIPHER_CTX_cleanup(&ctx);\n\t\tif (ret == 0)\n\t\t\tgoto err;\n\t\ti+=j;\n\t\t}\n\telse\n\t\t{\n\t\tret=1;\n\t\tbuf[0]='\\0';\n\t\t}\n\ti=PEM_write_bio(bp,name,buf,data,i);\n\tif (i <= 0) ret=0;\nerr:\n\tOPENSSL_cleanse(key,sizeof(key));\n\tOPENSSL_cleanse(iv,sizeof(iv));\n\tOPENSSL_cleanse((char *)&ctx,sizeof(ctx));\n\tOPENSSL_cleanse(buf,PEM_BUFSIZE);\n\tif (data != NULL)\n\t\t{\n\t\tOPENSSL_cleanse(data,(unsigned int)dsize);\n\t\tOPENSSL_free(data);\n\t\t}\n\treturn(ret);\n\t}"]