crypto/x509v3/v3_sxnet.c:252: error: MEMORY_LEAK
  memory dynamically allocated by call to `ASN1_STRING_type_new()` at line 247, column 15 is not reachable after line 252, column 2.
Showing all 15 steps of the trace


crypto/x509v3/v3_sxnet.c:243:1: start of procedure SXNET_add_id_ulong()
241.   /* Add an id given the zone as an unsigned long */
242.   
243. > int SXNET_add_id_ulong(SXNET **psx, unsigned long lzone, char *user,
244.   	     int userlen)
245.   {

crypto/x509v3/v3_sxnet.c:246:2: 
244.   	     int userlen)
245.   {
246. > 	ASN1_INTEGER *izone = NULL;
247.   	if(!(izone = M_ASN1_INTEGER_new()) || !ASN1_INTEGER_set(izone, lzone)) {
248.   		X509V3err(X509V3_F_SXNET_ADD_ID_ULONG,ERR_R_MALLOC_FAILURE);

crypto/x509v3/v3_sxnet.c:247:7: 
245.   {
246.   	ASN1_INTEGER *izone = NULL;
247. > 	if(!(izone = M_ASN1_INTEGER_new()) || !ASN1_INTEGER_set(izone, lzone)) {
248.   		X509V3err(X509V3_F_SXNET_ADD_ID_ULONG,ERR_R_MALLOC_FAILURE);
249.   		M_ASN1_INTEGER_free(izone);

crypto/asn1/asn1_lib.c:364:1: start of procedure ASN1_STRING_type_new()
  362.   
  363.   
  364. > ASN1_STRING *ASN1_STRING_type_new(int type)
  365.   	{
  366.   	ASN1_STRING *ret;

crypto/asn1/asn1_lib.c:368:2: 
  366.   	ASN1_STRING *ret;
  367.   
  368. > 	ret=(ASN1_STRING *)Malloc(sizeof(ASN1_STRING));
  369.   	if (ret == NULL)
  370.   		{

crypto/asn1/asn1_lib.c:369:6: Taking false branch
  367.   
  368.   	ret=(ASN1_STRING *)Malloc(sizeof(ASN1_STRING));
  369.   	if (ret == NULL)
              ^
  370.   		{
  371.   		ASN1err(ASN1_F_ASN1_STRING_TYPE_NEW,ERR_R_MALLOC_FAILURE);

crypto/asn1/asn1_lib.c:374:2: 
  372.   		return(NULL);
  373.   		}
  374. > 	ret->length=0;
  375.   	ret->type=type;
  376.   	ret->data=NULL;

crypto/asn1/asn1_lib.c:375:2: 
  373.   		}
  374.   	ret->length=0;
  375. > 	ret->type=type;
  376.   	ret->data=NULL;
  377.   	ret->flags=0;

crypto/asn1/asn1_lib.c:376:2: 
  374.   	ret->length=0;
  375.   	ret->type=type;
  376. > 	ret->data=NULL;
  377.   	ret->flags=0;
  378.   	return(ret);

crypto/asn1/asn1_lib.c:377:2: 
  375.   	ret->type=type;
  376.   	ret->data=NULL;
  377. > 	ret->flags=0;
  378.   	return(ret);
  379.   	}

crypto/asn1/asn1_lib.c:378:2: 
  376.   	ret->data=NULL;
  377.   	ret->flags=0;
  378. > 	return(ret);
  379.   	}
  380.   

crypto/asn1/asn1_lib.c:379:2: return from a call to ASN1_STRING_type_new
  377.   	ret->flags=0;
  378.   	return(ret);
  379.   	}
          ^
  380.   
  381.   void ASN1_STRING_free(ASN1_STRING *a)

crypto/x509v3/v3_sxnet.c:247:7: Taking false branch
245.   {
246.   	ASN1_INTEGER *izone = NULL;
247.   	if(!(izone = M_ASN1_INTEGER_new()) || !ASN1_INTEGER_set(izone, lzone)) {
             ^
248.   		X509V3err(X509V3_F_SXNET_ADD_ID_ULONG,ERR_R_MALLOC_FAILURE);
249.   		M_ASN1_INTEGER_free(izone);

crypto/x509v3/v3_sxnet.c:247:41: Taking false branch
245.   {
246.   	ASN1_INTEGER *izone = NULL;
247.   	if(!(izone = M_ASN1_INTEGER_new()) || !ASN1_INTEGER_set(izone, lzone)) {
                                               ^
248.   		X509V3err(X509V3_F_SXNET_ADD_ID_ULONG,ERR_R_MALLOC_FAILURE);
249.   		M_ASN1_INTEGER_free(izone);

crypto/x509v3/v3_sxnet.c:252:2: Skipping SXNET_add_id_INTEGER(): empty list of specs
250.   		return 0;
251.   	}
252.   	return SXNET_add_id_INTEGER(psx, izone, user, userlen);
        ^
253.   	
254.   }
