crypto/asn1/x_x509.c:106: error: NULL_DEREFERENCE
  pointer `null` is dereferenced by call to `X509_NAME_oneline()` at line 106, column 12.
Showing all 34 steps of the trace


crypto/asn1/x_x509.c:96:1: start of procedure d2i_X509()
94.   	}
95.   
96. > X509 *d2i_X509(X509 **a, unsigned char **pp, long length)
97.   	{
98.   	M_ASN1_D2I_vars(a,X509 *,X509_new);

crypto/asn1/x_x509.c:98:2: Taking false branch
96.   X509 *d2i_X509(X509 **a, unsigned char **pp, long length)
97.   	{
98.   	M_ASN1_D2I_vars(a,X509 *,X509_new);
        ^
99.   
100.   	M_ASN1_D2I_Init();

crypto/asn1/x_x509.c:98:2: Taking false branch
96.   X509 *d2i_X509(X509 **a, unsigned char **pp, long length)
97.   	{
98.   	M_ASN1_D2I_vars(a,X509 *,X509_new);
        ^
99.   
100.   	M_ASN1_D2I_Init();

crypto/asn1/x_x509.c:100:2: Condition is false
98.   	M_ASN1_D2I_vars(a,X509 *,X509_new);
99.   
100.   	M_ASN1_D2I_Init();
        ^
101.   	M_ASN1_D2I_start_sequence();
102.   	M_ASN1_D2I_get(ret->cert_info,d2i_X509_CINF);

crypto/asn1/x_x509.c:101:2: 
99.   
100.   	M_ASN1_D2I_Init();
101. > 	M_ASN1_D2I_start_sequence();
102.   	M_ASN1_D2I_get(ret->cert_info,d2i_X509_CINF);
103.   	M_ASN1_D2I_get(ret->sig_alg,d2i_X509_ALGOR);

crypto/asn1/asn1_lib.c:277:1: start of procedure asn1_GetSequence()
  275.   	}
  276.   
  277. > int asn1_GetSequence(ASN1_CTX *c, long *length)
  278.   	{
  279.   	unsigned char *q;

crypto/asn1/asn1_lib.c:281:2: 
  279.   	unsigned char *q;
  280.   
  281. > 	q=c->p;
  282.   	c->inf=ASN1_get_object(&(c->p),&(c->slen),&(c->tag),&(c->xclass),
  283.   		*length);

crypto/asn1/asn1_lib.c:282:2: Skipping ASN1_get_object(): empty list of specs
  280.   
  281.   	q=c->p;
  282.   	c->inf=ASN1_get_object(&(c->p),&(c->slen),&(c->tag),&(c->xclass),
          ^
  283.   		*length);
  284.   	if (c->inf & 0x80)

crypto/asn1/asn1_lib.c:284:6: Taking false branch
  282.   	c->inf=ASN1_get_object(&(c->p),&(c->slen),&(c->tag),&(c->xclass),
  283.   		*length);
  284.   	if (c->inf & 0x80)
              ^
  285.   		{
  286.   		c->error=ERR_R_BAD_GET_ASN1_OBJECT_CALL;

crypto/asn1/asn1_lib.c:289:6: Taking false branch
  287.   		return(0);
  288.   		}
  289.   	if (c->tag != V_ASN1_SEQUENCE)
              ^
  290.   		{
  291.   		c->error=ERR_R_EXPECTING_AN_ASN1_SEQUENCE;

crypto/asn1/asn1_lib.c:294:2: 
  292.   		return(0);
  293.   		}
  294. > 	(*length)-=(c->p-q);
  295.   	if (c->max && (*length < 0))
  296.   		{

crypto/asn1/asn1_lib.c:295:6: Taking true branch
  293.   		}
  294.   	(*length)-=(c->p-q);
  295.   	if (c->max && (*length < 0))
              ^
  296.   		{
  297.   		c->error=ERR_R_ASN1_LENGTH_MISMATCH;

crypto/asn1/asn1_lib.c:295:17: Taking false branch
  293.   		}
  294.   	(*length)-=(c->p-q);
  295.   	if (c->max && (*length < 0))
                         ^
  296.   		{
  297.   		c->error=ERR_R_ASN1_LENGTH_MISMATCH;

crypto/asn1/asn1_lib.c:300:6: Taking true branch
  298.   		return(0);
  299.   		}
  300.   	if (c->inf == (1|V_ASN1_CONSTRUCTED))
              ^
  301.   		c->slen= *length+ *(c->pp)-c->p;
  302.   	c->eos=0;

crypto/asn1/asn1_lib.c:301:3: 
  299.   		}
  300.   	if (c->inf == (1|V_ASN1_CONSTRUCTED))
  301. > 		c->slen= *length+ *(c->pp)-c->p;
  302.   	c->eos=0;
  303.   	return(1);

crypto/asn1/asn1_lib.c:302:2: 
  300.   	if (c->inf == (1|V_ASN1_CONSTRUCTED))
  301.   		c->slen= *length+ *(c->pp)-c->p;
  302. > 	c->eos=0;
  303.   	return(1);
  304.   	}

crypto/asn1/asn1_lib.c:303:2: 
  301.   		c->slen= *length+ *(c->pp)-c->p;
  302.   	c->eos=0;
  303. > 	return(1);
  304.   	}
  305.   

crypto/asn1/asn1_lib.c:304:2: return from a call to asn1_GetSequence
  302.   	c->eos=0;
  303.   	return(1);
  304.   	}
          ^
  305.   
  306.   ASN1_STRING *ASN1_STRING_dup(ASN1_STRING *str)

crypto/asn1/x_x509.c:101:2: Taking false branch
99.   
100.   	M_ASN1_D2I_Init();
101.   	M_ASN1_D2I_start_sequence();
        ^
102.   	M_ASN1_D2I_get(ret->cert_info,d2i_X509_CINF);
103.   	M_ASN1_D2I_get(ret->sig_alg,d2i_X509_ALGOR);

crypto/asn1/x_x509.c:102:2: Taking false branch
100.   	M_ASN1_D2I_Init();
101.   	M_ASN1_D2I_start_sequence();
102.   	M_ASN1_D2I_get(ret->cert_info,d2i_X509_CINF);
        ^
103.   	M_ASN1_D2I_get(ret->sig_alg,d2i_X509_ALGOR);
104.   	M_ASN1_D2I_get(ret->signature,d2i_ASN1_BIT_STRING);

crypto/asn1/x_x509.c:103:2: Taking false branch
101.   	M_ASN1_D2I_start_sequence();
102.   	M_ASN1_D2I_get(ret->cert_info,d2i_X509_CINF);
103.   	M_ASN1_D2I_get(ret->sig_alg,d2i_X509_ALGOR);
        ^
104.   	M_ASN1_D2I_get(ret->signature,d2i_ASN1_BIT_STRING);
105.   	if (ret->name != NULL) Free(ret->name);

crypto/asn1/x_x509.c:104:2: Taking false branch
102.   	M_ASN1_D2I_get(ret->cert_info,d2i_X509_CINF);
103.   	M_ASN1_D2I_get(ret->sig_alg,d2i_X509_ALGOR);
104.   	M_ASN1_D2I_get(ret->signature,d2i_ASN1_BIT_STRING);
        ^
105.   	if (ret->name != NULL) Free(ret->name);
106.   	ret->name=X509_NAME_oneline(ret->cert_info->subject,NULL,0);

crypto/asn1/x_x509.c:105:6: Taking true branch
103.   	M_ASN1_D2I_get(ret->sig_alg,d2i_X509_ALGOR);
104.   	M_ASN1_D2I_get(ret->signature,d2i_ASN1_BIT_STRING);
105.   	if (ret->name != NULL) Free(ret->name);
            ^
106.   	ret->name=X509_NAME_oneline(ret->cert_info->subject,NULL,0);
107.   

crypto/asn1/x_x509.c:105:25: 
103.   	M_ASN1_D2I_get(ret->sig_alg,d2i_X509_ALGOR);
104.   	M_ASN1_D2I_get(ret->signature,d2i_ASN1_BIT_STRING);
105. > 	if (ret->name != NULL) Free(ret->name);
106.   	ret->name=X509_NAME_oneline(ret->cert_info->subject,NULL,0);
107.   

crypto/asn1/x_x509.c:106:2: 
104.   	M_ASN1_D2I_get(ret->signature,d2i_ASN1_BIT_STRING);
105.   	if (ret->name != NULL) Free(ret->name);
106. > 	ret->name=X509_NAME_oneline(ret->cert_info->subject,NULL,0);
107.   
108.   	M_ASN1_D2I_Finish(a,X509_free,ASN1_F_D2I_X509);

crypto/x509/x509_obj.c:66:1: start of procedure X509_NAME_oneline()
  64.   #include <openssl/buffer.h>
  65.   
  66. > char *X509_NAME_oneline(X509_NAME *a, char *buf, int len)
  67.   	{
  68.   	X509_NAME_ENTRY *ne;

crypto/x509/x509_obj.c:74:2: 
  72.   	char *p;
  73.   	unsigned char *q;
  74. > 	BUF_MEM *b=NULL;
  75.   	static char hex[17]="0123456789ABCDEF";
  76.   	int gs_doit[4];

crypto/x509/x509_obj.c:75:2: 
  73.   	unsigned char *q;
  74.   	BUF_MEM *b=NULL;
  75. > 	static char hex[17]="0123456789ABCDEF";
  76.   	int gs_doit[4];
  77.   	char tmp_buf[80];

crypto/x509/x509_obj.c:82:6: Taking false branch
  80.   #endif
  81.   
  82.   	if (buf == NULL)
             ^
  83.   		{
  84.   		if ((b=BUF_MEM_new()) == NULL) goto err;

crypto/x509/x509_obj.c:89:6: Taking true branch
  87.   		len=200;
  88.   		}
  89.   	if (a == NULL)
             ^
  90.   	    {
  91.   	    if(b)

crypto/x509/x509_obj.c:91:9: Taking false branch
  89.   	if (a == NULL)
  90.   	    {
  91.   	    if(b)
                ^
  92.   		{
  93.   		buf=b->data;

crypto/x509/x509_obj.c:96:6: 
  94.   		Free(b);
  95.   		}
  96. > 	    strncpy(buf,"NO X509_NAME",len);
  97.   	    return buf;
  98.   	    }

crypto/x509/x509_obj.c:97:6: 
  95.   		}
  96.   	    strncpy(buf,"NO X509_NAME",len);
  97. > 	    return buf;
  98.   	    }
  99.   

crypto/x509/x509_obj.c:222:2: return from a call to X509_NAME_oneline
  220.   	if (b != NULL) BUF_MEM_free(b);
  221.   	return(NULL);
  222.   	}
          ^
  223.   
