apps/ca.c:1518: error: BUFFER_OVERRUN_L3
  Offset: [-529, +oo] Size: 12 by call to `X509_print`.
Showing all 16 steps of the trace


apps/ca.c:1512:11: Call
1510.   		goto err;
1511.   		}
1512.   	if ((req=PEM_read_bio_X509(in,NULL,NULL,NULL)) == NULL)
                  ^
1513.   		{
1514.   		BIO_printf(bio_err,"Error reading self signed certificate in %s\n",infile);

crypto/pem/pem_all.c:75:1: Call
  73.   #endif
  74.   
  75. > IMPLEMENT_PEM_rw(X509, X509, PEM_STRING_X509, X509)
  76.   
  77.   IMPLEMENT_PEM_rw(X509_AUX, X509, PEM_STRING_X509_TRUSTED, X509_AUX)

crypto/pem/pem_lib.c:227:1: Parameter `**x`
    225.   }
    226.   
    227. > char *PEM_ASN1_read_bio(char *(*d2i)(), const char *name, BIO *bp, char **x,
    228.   	     pem_password_cb *cb, void *u)
    229.   	{

apps/ca.c:1518:3: Call
1516.   		}
1517.   	if (verbose)
1518.   		X509_print(bio_err,req);
          ^
1519.   
1520.   	BIO_printf(bio_err,"Check that the request matches the signature\n");

crypto/asn1/t_x509.c:96:1: Parameter `*x->cert_info->validity->notAfter->data`
  94.   #endif
  95.   
  96. > int X509_print(BIO *bp, X509 *x)
  97.   {
  98.   	return X509_print_ex(bp, x, XN_FLAG_COMPAT, X509_FLAG_COMPAT);

crypto/asn1/t_x509.c:98:9: Call
  96.   int X509_print(BIO *bp, X509 *x)
  97.   {
  98.   	return X509_print_ex(bp, x, XN_FLAG_COMPAT, X509_FLAG_COMPAT);
                 ^
  99.   }
  100.   

crypto/asn1/t_x509.c:101:1: Parameter `*x->cert_info->validity->notAfter->data`
    99.   }
    100.   
    101. > int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflags, unsigned long cflag)
    102.   	{
    103.   	long l;

crypto/asn1/t_x509.c:186:8: Call
    184.   		if (!ASN1_TIME_print(bp,X509_get_notBefore(x))) goto err;
    185.   		if (BIO_write(bp,"\n            Not After : ",25) <= 0) goto err;
    186.   		if (!ASN1_TIME_print(bp,X509_get_notAfter(x))) goto err;
                  ^
    187.   		if (BIO_write(bp,"\n",1) <= 0) goto err;
    188.   		}

crypto/asn1/t_x509.c:364:1: Parameter `*tm->data`
      362.   	}
      363.   
      364. > int ASN1_TIME_print(BIO *bp, ASN1_TIME *tm)
      365.   {
      366.   	if(tm->type == V_ASN1_UTCTIME) return ASN1_UTCTIME_print(bp, tm);

crypto/asn1/t_x509.c:368:12: Call
      366.   	if(tm->type == V_ASN1_UTCTIME) return ASN1_UTCTIME_print(bp, tm);
      367.   	if(tm->type == V_ASN1_GENERALIZEDTIME)
      368.   				return ASN1_GENERALIZEDTIME_print(bp, tm);
                        ^
      369.   	BIO_write(bp,"Bad time value",14);
      370.   	return(0);

crypto/asn1/t_x509.c:379:1: <Offset trace>
377.       };
378.   
379. > int ASN1_GENERALIZEDTIME_print(BIO *bp, ASN1_GENERALIZEDTIME *tm)
380.   	{
381.   	char *v;

crypto/asn1/t_x509.c:379:1: Parameter `*tm->data`
        377.       };
        378.   
        379. > int ASN1_GENERALIZEDTIME_print(BIO *bp, ASN1_GENERALIZEDTIME *tm)
        380.   	{
        381.   	char *v;

crypto/asn1/t_x509.c:394:2: Assignment
        392.   		if ((v[i] > '9') || (v[i] < '0')) goto err;
        393.   	y= (v[0]-'0')*1000+(v[1]-'0')*100 + (v[2]-'0')*10+(v[3]-'0');
        394.   	M= (v[4]-'0')*10+(v[5]-'0');
                ^
        395.   	if ((M > 12) || (M < 1)) goto err;
        396.   	d= (v[6]-'0')*10+(v[7]-'0');

crypto/asn1/t_x509.c:373:1: <Length trace>
371.   }
372.   
373. > static const char *mon[12]=
374.       {
375.       "Jan","Feb","Mar","Apr","May","Jun",

crypto/asn1/t_x509.c:373:1: Array declaration
        371.   }
        372.   
        373. > static const char *mon[12]=
        374.       {
        375.       "Jan","Feb","Mar","Apr","May","Jun",

crypto/asn1/t_x509.c:404:3: Array access: Offset: [-529, +oo] Size: 12 by call to `X509_print` 
        402.   
        403.   	if (BIO_printf(bp,"%s %2d %02d:%02d:%02d %d%s",
        404.   		mon[M-1],d,h,m,s,y,(gmt)?" GMT":"") <= 0)
                 ^
        405.   		return(0);
        406.   	else

int ASN1_GENERALIZEDTIME_print(BIO *bp, ASN1_GENERALIZEDTIME *tm)
	{
	char *v;
	int gmt=0;
	int i;
	int y=0,M=0,d=0,h=0,m=0,s=0;
	i=tm->length;
	v=(char *)tm->data;
	if (i < 12) goto err;
	if (v[i-1] == 'Z') gmt=1;
	for (i=0; i<12; i++)
		if ((v[i] > '9') || (v[i] < '0')) goto err;
	y= (v[0]-'0')*1000+(v[1]-'0')*100 + (v[2]-'0')*10+(v[3]-'0');
	M= (v[4]-'0')*10+(v[5]-'0');
	if ((M > 12) || (M < 1)) goto err;
	d= (v[6]-'0')*10+(v[7]-'0');
	h= (v[8]-'0')*10+(v[9]-'0');
	m=  (v[10]-'0')*10+(v[11]-'0');
	if (	(v[12] >= '0') && (v[12] <= '9') &&
		(v[13] >= '0') && (v[13] <= '9'))
		s=  (v[12]-'0')*10+(v[13]-'0');
	if (BIO_printf(bp,"%s %2d %02d:%02d:%02d %d%s",
		mon[M-1],d,h,m,s,y,(gmt)?" GMT":"") <= 0)
		return(0);
	else
		return(1);
err:
	BIO_write(bp,"Bad time value",14);
	return(0);
	}
['static int certify_cert(X509 **xret, char *infile, EVP_PKEY *pkey, X509 *x509,\n\t     const EVP_MD *dgst, STACK_OF(CONF_VALUE) *policy, TXT_DB *db,\n\t     BIGNUM *serial, char *startdate, char *enddate, int days,\n\t     int batch, char *ext_sect, LHASH *lconf, int verbose)\n\t{\n\tX509 *req=NULL;\n\tX509_REQ *rreq=NULL;\n\tBIO *in=NULL;\n\tEVP_PKEY *pktmp=NULL;\n\tint ok= -1,i;\n\tin=BIO_new(BIO_s_file());\n\tif (BIO_read_filename(in,infile) <= 0)\n\t\t{\n\t\tperror(infile);\n\t\tgoto err;\n\t\t}\n\tif ((req=PEM_read_bio_X509(in,NULL,NULL,NULL)) == NULL)\n\t\t{\n\t\tBIO_printf(bio_err,"Error reading self signed certificate in %s\\n",infile);\n\t\tgoto err;\n\t\t}\n\tif (verbose)\n\t\tX509_print(bio_err,req);\n\tBIO_printf(bio_err,"Check that the request matches the signature\\n");\n\tif ((pktmp=X509_get_pubkey(req)) == NULL)\n\t\t{\n\t\tBIO_printf(bio_err,"error unpacking public key\\n");\n\t\tgoto err;\n\t\t}\n\ti=X509_verify(req,pktmp);\n\tEVP_PKEY_free(pktmp);\n\tif (i < 0)\n\t\t{\n\t\tok=0;\n\t\tBIO_printf(bio_err,"Signature verification problems....\\n");\n\t\tgoto err;\n\t\t}\n\tif (i == 0)\n\t\t{\n\t\tok=0;\n\t\tBIO_printf(bio_err,"Signature did not match the certificate\\n");\n\t\tgoto err;\n\t\t}\n\telse\n\t\tBIO_printf(bio_err,"Signature ok\\n");\n\tif ((rreq=X509_to_X509_REQ(req,NULL,EVP_md5())) == NULL)\n\t\tgoto err;\n\tok=do_body(xret,pkey,x509,dgst,policy,db,serial,startdate,enddate,days,\n\t\tbatch,verbose,rreq,ext_sect,lconf);\nerr:\n\tif (rreq != NULL) X509_REQ_free(rreq);\n\tif (req != NULL) X509_free(req);\n\tif (in != NULL) BIO_free(in);\n\treturn(ok);\n\t}', 'IMPLEMENT_PEM_rw(X509, X509, PEM_STRING_X509, X509)', 'char *PEM_ASN1_read_bio(char *(*d2i)(), const char *name, BIO *bp, char **x,\n\t     pem_password_cb *cb, void *u)\n\t{\n\tEVP_CIPHER_INFO cipher;\n\tchar *nm=NULL,*header=NULL;\n\tunsigned char *p=NULL,*data=NULL;\n\tlong len;\n\tchar *ret=NULL;\n\tfor (;;)\n\t\t{\n\t\tif (!PEM_read_bio(bp,&nm,&header,&data,&len)) {\n\t\t\tif(ERR_GET_REASON(ERR_peek_error()) ==\n\t\t\t\tPEM_R_NO_START_LINE)\n\t\t\t\tERR_add_error_data(2, "Expecting: ", name);\n\t\t\treturn(NULL);\n\t\t}\n\t\tif(check_pem(nm, name)) break;\n\t\tOPENSSL_free(nm);\n\t\tOPENSSL_free(header);\n\t\tOPENSSL_free(data);\n\t\t}\n\tif (!PEM_get_EVP_CIPHER_INFO(header,&cipher)) goto err;\n\tif (!PEM_do_header(&cipher,data,&len,cb,u)) goto err;\n\tp=data;\n\tif (strcmp(name,PEM_STRING_EVP_PKEY) == 0) {\n\t\tif (strcmp(nm,PEM_STRING_RSA) == 0)\n\t\t\tret=d2i(EVP_PKEY_RSA,x,&p,len);\n\t\telse if (strcmp(nm,PEM_STRING_DSA) == 0)\n\t\t\tret=d2i(EVP_PKEY_DSA,x,&p,len);\n\t\telse if (strcmp(nm,PEM_STRING_PKCS8INF) == 0) {\n\t\t\tPKCS8_PRIV_KEY_INFO *p8inf;\n\t\t\tp8inf=d2i_PKCS8_PRIV_KEY_INFO(\n\t\t\t\t\t(PKCS8_PRIV_KEY_INFO **) x, &p, len);\n\t\t\tret = (char *)EVP_PKCS82PKEY(p8inf);\n\t\t\tPKCS8_PRIV_KEY_INFO_free(p8inf);\n\t\t} else if (strcmp(nm,PEM_STRING_PKCS8) == 0) {\n\t\t\tPKCS8_PRIV_KEY_INFO *p8inf;\n\t\t\tX509_SIG *p8;\n\t\t\tint klen;\n\t\t\tchar psbuf[PEM_BUFSIZE];\n\t\t\tp8 = d2i_X509_SIG(NULL, &p, len);\n\t\t\tif(!p8) goto p8err;\n\t\t\tif (cb) klen=cb(psbuf,PEM_BUFSIZE,0,u);\n\t\t\telse klen=def_callback(psbuf,PEM_BUFSIZE,0,u);\n\t\t\tif (klen <= 0) {\n\t\t\t\tPEMerr(PEM_F_PEM_ASN1_READ_BIO,\n\t\t\t\t\t\tPEM_R_BAD_PASSWORD_READ);\n\t\t\t\tgoto err;\n\t\t\t}\n\t\t\tp8inf = M_PKCS8_decrypt(p8, psbuf, klen);\n\t\t\tX509_SIG_free(p8);\n\t\t\tif(!p8inf) goto p8err;\n\t\t\tret = (char *)EVP_PKCS82PKEY(p8inf);\n\t\t\tif(x) {\n\t\t\t\tif(*x) EVP_PKEY_free((EVP_PKEY *)*x);\n\t\t\t\t*x = ret;\n\t\t\t}\n\t\t\tPKCS8_PRIV_KEY_INFO_free(p8inf);\n\t\t}\n\t} else\tret=d2i(x,&p,len);\np8err:\n\tif (ret == NULL)\n\t\tPEMerr(PEM_F_PEM_ASN1_READ_BIO,ERR_R_ASN1_LIB);\nerr:\n\tOPENSSL_free(nm);\n\tOPENSSL_free(header);\n\tOPENSSL_free(data);\n\treturn(ret);\n\t}', 'int X509_print(BIO *bp, X509 *x)\n{\n\treturn X509_print_ex(bp, x, XN_FLAG_COMPAT, X509_FLAG_COMPAT);\n}', 'int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflags, unsigned long cflag)\n\t{\n\tlong l;\n\tint ret=0,i,j,n;\n\tchar *m=NULL,*s, mlch = \' \';\n\tint nmindent = 0;\n\tX509_CINF *ci;\n\tASN1_INTEGER *bs;\n\tEVP_PKEY *pkey=NULL;\n\tconst char *neg;\n\tX509_EXTENSION *ex;\n\tASN1_STRING *str=NULL;\n\tif((nmflags & XN_FLAG_SEP_MASK) == XN_FLAG_SEP_MULTILINE) {\n\t\t\tmlch = \'\\n\';\n\t\t\tnmindent = 16;\n\t}\n\tif(nmflags == X509_FLAG_COMPAT)\n\t\tnmindent = 16;\n\tci=x->cert_info;\n\tif(!(cflag & X509_FLAG_NO_HEADER))\n\t\t{\n\t\tif (BIO_write(bp,"Certificate:\\n",13) <= 0) goto err;\n\t\tif (BIO_write(bp,"    Data:\\n",10) <= 0) goto err;\n\t\t}\n\tif(!(cflag & X509_FLAG_NO_VERSION))\n\t\t{\n\t\tl=X509_get_version(x);\n\t\tif (BIO_printf(bp,"%8sVersion: %lu (0x%lx)\\n","",l+1,l) <= 0) goto err;\n\t\t}\n\tif(!(cflag & X509_FLAG_NO_SERIAL))\n\t\t{\n\t\tif (BIO_write(bp,"        Serial Number:",22) <= 0) goto err;\n\t\tbs=X509_get_serialNumber(x);\n\t\tif (bs->length <= 4)\n\t\t\t{\n\t\t\tl=ASN1_INTEGER_get(bs);\n\t\t\tif (l < 0)\n\t\t\t\t{\n\t\t\t\tl= -l;\n\t\t\t\tneg="-";\n\t\t\t\t}\n\t\t\telse\n\t\t\t\tneg="";\n\t\t\tif (BIO_printf(bp," %s%lu (%s0x%lx)\\n",neg,l,neg,l) <= 0)\n\t\t\t\tgoto err;\n\t\t\t}\n\t\telse\n\t\t\t{\n\t\t\tneg=(bs->type == V_ASN1_NEG_INTEGER)?" (Negative)":"";\n\t\t\tif (BIO_printf(bp,"\\n%12s%s","",neg) <= 0) goto err;\n\t\t\tfor (i=0; i<bs->length; i++)\n\t\t\t\t{\n\t\t\t\tif (BIO_printf(bp,"%02x%c",bs->data[i],\n\t\t\t\t\t((i+1 == bs->length)?\'\\n\':\':\')) <= 0)\n\t\t\t\t\tgoto err;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\tif(!(cflag & X509_FLAG_NO_SIGNAME))\n\t\t{\n\t\ti=OBJ_obj2nid(ci->signature->algorithm);\n\t\tif (BIO_printf(bp,"%8sSignature Algorithm: %s\\n","",\n\t\t\t(i == NID_undef)?"UNKNOWN":OBJ_nid2ln(i)) <= 0)\n\t\t\tgoto err;\n\t\t}\n\tif(!(cflag & X509_FLAG_NO_ISSUER))\n\t\t{\n\t\tif (BIO_printf(bp,"        Issuer:%c",mlch) <= 0) goto err;\n\t\tif (!X509_NAME_print_ex(bp,X509_get_issuer_name(x),nmindent, nmflags)) goto err;\n\t\t}\n\tif(!(cflag & X509_FLAG_NO_VALIDITY))\n\t\t{\n\t\tif (BIO_write(bp,"\\n        Validity\\n",18) <= 0) goto err;\n\t\tif (BIO_write(bp,"            Not Before: ",24) <= 0) goto err;\n\t\tif (!ASN1_TIME_print(bp,X509_get_notBefore(x))) goto err;\n\t\tif (BIO_write(bp,"\\n            Not After : ",25) <= 0) goto err;\n\t\tif (!ASN1_TIME_print(bp,X509_get_notAfter(x))) goto err;\n\t\tif (BIO_write(bp,"\\n",1) <= 0) goto err;\n\t\t}\n\tif(!(cflag & X509_FLAG_NO_SUBJECT))\n\t\t{\n\t\tif (BIO_printf(bp,"        Subject:%c",mlch) <= 0) goto err;\n\t\tif (!X509_NAME_print_ex(bp,X509_get_subject_name(x),nmindent, nmflags)) goto err;\n\t\t}\n\tif(!(cflag & X509_FLAG_NO_PUBKEY))\n\t\t{\n\t\tif (BIO_write(bp,"\\n        Subject Public Key Info:\\n",34) <= 0)\n\t\t\tgoto err;\n\t\ti=OBJ_obj2nid(ci->key->algor->algorithm);\n\t\tif (BIO_printf(bp,"%12sPublic Key Algorithm: %s\\n","",\n\t\t\t(i == NID_undef)?"UNKNOWN":OBJ_nid2ln(i)) <= 0) goto err;\n\t\tpkey=X509_get_pubkey(x);\n\t\tif (pkey == NULL)\n\t\t\t{\n\t\t\tBIO_printf(bp,"%12sUnable to load Public Key\\n","");\n\t\t\tERR_print_errors(bp);\n\t\t\t}\n\t\telse\n#ifndef NO_RSA\n\t\tif (pkey->type == EVP_PKEY_RSA)\n\t\t\t{\n\t\t\tBIO_printf(bp,"%12sRSA Public Key: (%d bit)\\n","",\n\t\t\tBN_num_bits(pkey->pkey.rsa->n));\n\t\t\tRSA_print(bp,pkey->pkey.rsa,16);\n\t\t\t}\n\t\telse\n#endif\n#ifndef NO_DSA\n\t\tif (pkey->type == EVP_PKEY_DSA)\n\t\t\t{\n\t\t\tBIO_printf(bp,"%12sDSA Public Key:\\n","");\n\t\t\tDSA_print(bp,pkey->pkey.dsa,16);\n\t\t\t}\n\t\telse\n#endif\n\t\t\tBIO_printf(bp,"%12sUnknown Public Key:\\n","");\n\t\tEVP_PKEY_free(pkey);\n\t\t}\n\tif (cflag & X509_FLAG_NO_EXTENSIONS)\n\t\tn = 0;\n\telse\n\t\tn=X509_get_ext_count(x);\n\tif (n > 0)\n\t\t{\n\t\tBIO_printf(bp,"%8sX509v3 extensions:\\n","");\n\t\tfor (i=0; i<n; i++)\n\t\t\t{\n\t\t\tASN1_OBJECT *obj;\n\t\t\tex=X509_get_ext(x,i);\n\t\t\tif (BIO_printf(bp,"%12s","") <= 0) goto err;\n\t\t\tobj=X509_EXTENSION_get_object(ex);\n\t\t\ti2a_ASN1_OBJECT(bp,obj);\n\t\t\tj=X509_EXTENSION_get_critical(ex);\n\t\t\tif (BIO_printf(bp,": %s\\n",j?"critical":"","") <= 0)\n\t\t\t\tgoto err;\n\t\t\tif(!X509V3_EXT_print(bp, ex, cflag, 16))\n\t\t\t\t{\n\t\t\t\tBIO_printf(bp, "%16s", "");\n\t\t\t\tM_ASN1_OCTET_STRING_print(bp,ex->value);\n\t\t\t\t}\n\t\t\tif (BIO_write(bp,"\\n",1) <= 0) goto err;\n\t\t\t}\n\t\t}\n\tif(!(cflag & X509_FLAG_NO_SIGDUMP))\n\t\t{\n\t\ti=OBJ_obj2nid(x->sig_alg->algorithm);\n\t\tif (BIO_printf(bp,"%4sSignature Algorithm: %s","",\n\t\t\t(i == NID_undef)?"UNKNOWN":OBJ_nid2ln(i)) <= 0) goto err;\n\t\tn=x->signature->length;\n\t\ts=(char *)x->signature->data;\n\t\tfor (i=0; i<n; i++)\n\t\t\t{\n\t\t\tif ((i%18) == 0)\n\t\t\t\tif (BIO_write(bp,"\\n        ",9) <= 0) goto err;\n\t\t\tif (BIO_printf(bp,"%02x%s",(unsigned char)s[i],\n\t\t\t\t((i+1) == n)?"":":") <= 0) goto err;\n\t\t\t}\n\t\tif (BIO_write(bp,"\\n",1) != 1) goto err;\n\t\t}\n\tif(!(cflag & X509_FLAG_NO_AUX))\n\t\t{\n\t\tif (!X509_CERT_AUX_print(bp, x->aux, 0)) goto err;\n\t\t}\n\tret=1;\nerr:\n\tif (str != NULL) ASN1_STRING_free(str);\n\tif (m != NULL) OPENSSL_free(m);\n\treturn(ret);\n\t}', 'int ASN1_TIME_print(BIO *bp, ASN1_TIME *tm)\n{\n\tif(tm->type == V_ASN1_UTCTIME) return ASN1_UTCTIME_print(bp, tm);\n\tif(tm->type == V_ASN1_GENERALIZEDTIME)\n\t\t\t\treturn ASN1_GENERALIZEDTIME_print(bp, tm);\n\tBIO_write(bp,"Bad time value",14);\n\treturn(0);\n}', 'int ASN1_GENERALIZEDTIME_print(BIO *bp, ASN1_GENERALIZEDTIME *tm)\n\t{\n\tchar *v;\n\tint gmt=0;\n\tint i;\n\tint y=0,M=0,d=0,h=0,m=0,s=0;\n\ti=tm->length;\n\tv=(char *)tm->data;\n\tif (i < 12) goto err;\n\tif (v[i-1] == \'Z\') gmt=1;\n\tfor (i=0; i<12; i++)\n\t\tif ((v[i] > \'9\') || (v[i] < \'0\')) goto err;\n\ty= (v[0]-\'0\')*1000+(v[1]-\'0\')*100 + (v[2]-\'0\')*10+(v[3]-\'0\');\n\tM= (v[4]-\'0\')*10+(v[5]-\'0\');\n\tif ((M > 12) || (M < 1)) goto err;\n\td= (v[6]-\'0\')*10+(v[7]-\'0\');\n\th= (v[8]-\'0\')*10+(v[9]-\'0\');\n\tm=  (v[10]-\'0\')*10+(v[11]-\'0\');\n\tif (\t(v[12] >= \'0\') && (v[12] <= \'9\') &&\n\t\t(v[13] >= \'0\') && (v[13] <= \'9\'))\n\t\ts=  (v[12]-\'0\')*10+(v[13]-\'0\');\n\tif (BIO_printf(bp,"%s %2d %02d:%02d:%02d %d%s",\n\t\tmon[M-1],d,h,m,s,y,(gmt)?" GMT":"") <= 0)\n\t\treturn(0);\n\telse\n\t\treturn(1);\nerr:\n\tBIO_write(bp,"Bad time value",14);\n\treturn(0);\n\t}']