crypto/asn1/i2d_dhp.c:124: error: UNINITIALIZED_VALUE
  The value read from p was never initialized.
Showing all 1 steps of the trace


crypto/asn1/i2d_dhp.c:124:2: 
122.   err:
123.   	if (num[2] != NULL) BN_free(num[2]);
124. > 	*pp=p;
125.   	return(ret);
126.   	}

int i2d_DHparams(DH *a, unsigned char **pp)
	{
	BIGNUM *num[3];
	ASN1_INTEGER bs;
	unsigned int j,i,tot=0,len,max=0;
	int t,ret= -1;
	unsigned char *p;
	if (a == NULL) return(0);
	num[0]=a->p;
	num[1]=a->g;
	if (a->length != 0)
		{
		if ((num[2]=BN_new()) == NULL) goto err;
		if (!BN_set_word(num[2],a->length)) goto err;
		}
	else
		num[2]=NULL;
	for (i=0; i<3; i++)
		{
		if (num[i] == NULL) continue;
		j=BN_num_bits(num[i]);
		len=((j == 0)?0:((j/8)+1));
		if (len > max) max=len;
		len=ASN1_object_size(0,len,
			(num[i]->neg)?V_ASN1_NEG_INTEGER:V_ASN1_INTEGER);
		tot+=len;
		}
	t=ASN1_object_size(1,tot,V_ASN1_SEQUENCE);
	if (pp == NULL) return(t);
	p= *pp;
	ASN1_put_object(&p,1,tot,V_ASN1_SEQUENCE,V_ASN1_UNIVERSAL);
	bs.type=V_ASN1_INTEGER;
	bs.data=(unsigned char *)Malloc(max+4);
	if (bs.data == NULL)
		{
		ASN1err(ASN1_F_I2D_DHPARAMS,ERR_R_MALLOC_FAILURE);
		goto err;
		}
	for (i=0; i<3; i++)
		{
		if (num[i] == NULL) continue;
		bs.length=BN_bn2bin(num[i],bs.data);
		i2d_ASN1_INTEGER(&bs,&p);
		}
	Free((char *)bs.data);
	ret=t;
err:
	if (num[2] != NULL) BN_free(num[2]);
	*pp=p;
	return(ret);
	}
['int i2d_DHparams(DH *a, unsigned char **pp)\n\t{\n\tBIGNUM *num[3];\n\tASN1_INTEGER bs;\n\tunsigned int j,i,tot=0,len,max=0;\n\tint t,ret= -1;\n\tunsigned char *p;\n\tif (a == NULL) return(0);\n\tnum[0]=a->p;\n\tnum[1]=a->g;\n\tif (a->length != 0)\n\t\t{\n\t\tif ((num[2]=BN_new()) == NULL) goto err;\n\t\tif (!BN_set_word(num[2],a->length)) goto err;\n\t\t}\n\telse\n\t\tnum[2]=NULL;\n\tfor (i=0; i<3; i++)\n\t\t{\n\t\tif (num[i] == NULL) continue;\n\t\tj=BN_num_bits(num[i]);\n\t\tlen=((j == 0)?0:((j/8)+1));\n\t\tif (len > max) max=len;\n\t\tlen=ASN1_object_size(0,len,\n\t\t\t(num[i]->neg)?V_ASN1_NEG_INTEGER:V_ASN1_INTEGER);\n\t\ttot+=len;\n\t\t}\n\tt=ASN1_object_size(1,tot,V_ASN1_SEQUENCE);\n\tif (pp == NULL) return(t);\n\tp= *pp;\n\tASN1_put_object(&p,1,tot,V_ASN1_SEQUENCE,V_ASN1_UNIVERSAL);\n\tbs.type=V_ASN1_INTEGER;\n\tbs.data=(unsigned char *)Malloc(max+4);\n\tif (bs.data == NULL)\n\t\t{\n\t\tASN1err(ASN1_F_I2D_DHPARAMS,ERR_R_MALLOC_FAILURE);\n\t\tgoto err;\n\t\t}\n\tfor (i=0; i<3; i++)\n\t\t{\n\t\tif (num[i] == NULL) continue;\n\t\tbs.length=BN_bn2bin(num[i],bs.data);\n\t\ti2d_ASN1_INTEGER(&bs,&p);\n\t\t}\n\tFree((char *)bs.data);\n\tret=t;\nerr:\n\tif (num[2] != NULL) BN_free(num[2]);\n\t*pp=p;\n\treturn(ret);\n\t}']