apps/x509.c:1183: error: NULL_DEREFERENCE
  pointer `pktmp` last assigned on line 1182 could be null and is dereferenced by call to `EVP_PKEY_copy_parameters()` at line 1183, column 2.
Showing all 8 steps of the trace


apps/x509.c:1176:1: start of procedure sign()
1174.   
1175.   /* self sign */
1176. > static int sign(X509 *x, EVP_PKEY *pkey, int days, const EVP_MD *digest, 
1177.   						LHASH *conf, char *section)
1178.   	{

apps/x509.c:1182:2: 
1180.   	EVP_PKEY *pktmp;
1181.   
1182. > 	pktmp = X509_get_pubkey(x);
1183.   	EVP_PKEY_copy_parameters(pktmp,pkey);
1184.   	EVP_PKEY_save_parameters(pktmp,1);

crypto/x509/x509_cmp.c:239:1: start of procedure X509_get_pubkey()
  237.   	}
  238.   
  239. > EVP_PKEY *X509_get_pubkey(X509 *x)
  240.   	{
  241.   	if ((x == NULL) || (x->cert_info == NULL))

crypto/x509/x509_cmp.c:241:7: Taking false branch
  239.   EVP_PKEY *X509_get_pubkey(X509 *x)
  240.   	{
  241.   	if ((x == NULL) || (x->cert_info == NULL))
               ^
  242.   		return(NULL);
  243.   	return(X509_PUBKEY_get(x->cert_info->key));

crypto/x509/x509_cmp.c:241:22: Taking true branch
  239.   EVP_PKEY *X509_get_pubkey(X509 *x)
  240.   	{
  241.   	if ((x == NULL) || (x->cert_info == NULL))
                              ^
  242.   		return(NULL);
  243.   	return(X509_PUBKEY_get(x->cert_info->key));

crypto/x509/x509_cmp.c:242:3: 
  240.   	{
  241.   	if ((x == NULL) || (x->cert_info == NULL))
  242. > 		return(NULL);
  243.   	return(X509_PUBKEY_get(x->cert_info->key));
  244.   	}

crypto/x509/x509_cmp.c:244:2: return from a call to X509_get_pubkey
  242.   		return(NULL);
  243.   	return(X509_PUBKEY_get(x->cert_info->key));
  244.   	}
          ^
  245.   
  246.   int X509_check_private_key(X509 *x, EVP_PKEY *k)

apps/x509.c:1183:2: 
1181.   
1182.   	pktmp = X509_get_pubkey(x);
1183. > 	EVP_PKEY_copy_parameters(pktmp,pkey);
1184.   	EVP_PKEY_save_parameters(pktmp,1);
1185.   	EVP_PKEY_free(pktmp);

static int sign(X509 *x, EVP_PKEY *pkey, int days, const EVP_MD *digest,
						LHASH *conf, char *section)
	{
	EVP_PKEY *pktmp;
	pktmp = X509_get_pubkey(x);
	EVP_PKEY_copy_parameters(pktmp,pkey);
	EVP_PKEY_save_parameters(pktmp,1);
	EVP_PKEY_free(pktmp);
	if (!X509_set_issuer_name(x,X509_get_subject_name(x))) goto err;
	if (X509_gmtime_adj(X509_get_notBefore(x),0) == NULL) goto err;
	if (X509_gmtime_adj(X509_get_notAfter(x),(long)60*60*24*days) == NULL)
		goto err;
	if (!X509_set_pubkey(x,pkey)) goto err;
	if(conf) {
		X509V3_CTX ctx;
		X509_set_version(x,2);
                X509V3_set_ctx(&ctx, x, x, NULL, NULL, 0);
                X509V3_set_conf_lhash(&ctx, conf);
                if(!X509V3_EXT_add_conf(conf, &ctx, section, x)) goto err;
	}
	if (!X509_sign(x,pkey,digest)) goto err;
	return(1);
err:
	ERR_print_errors(bio_err);
	return(0);
	}
['static int sign(X509 *x, EVP_PKEY *pkey, int days, const EVP_MD *digest,\n\t\t\t\t\t\tLHASH *conf, char *section)\n\t{\n\tEVP_PKEY *pktmp;\n\tpktmp = X509_get_pubkey(x);\n\tEVP_PKEY_copy_parameters(pktmp,pkey);\n\tEVP_PKEY_save_parameters(pktmp,1);\n\tEVP_PKEY_free(pktmp);\n\tif (!X509_set_issuer_name(x,X509_get_subject_name(x))) goto err;\n\tif (X509_gmtime_adj(X509_get_notBefore(x),0) == NULL) goto err;\n\tif (X509_gmtime_adj(X509_get_notAfter(x),(long)60*60*24*days) == NULL)\n\t\tgoto err;\n\tif (!X509_set_pubkey(x,pkey)) goto err;\n\tif(conf) {\n\t\tX509V3_CTX ctx;\n\t\tX509_set_version(x,2);\n                X509V3_set_ctx(&ctx, x, x, NULL, NULL, 0);\n                X509V3_set_conf_lhash(&ctx, conf);\n                if(!X509V3_EXT_add_conf(conf, &ctx, section, x)) goto err;\n\t}\n\tif (!X509_sign(x,pkey,digest)) goto err;\n\treturn(1);\nerr:\n\tERR_print_errors(bio_err);\n\treturn(0);\n\t}', 'EVP_PKEY *X509_get_pubkey(X509 *x)\n\t{\n\tif ((x == NULL) || (x->cert_info == NULL))\n\t\treturn(NULL);\n\treturn(X509_PUBKEY_get(x->cert_info->key));\n\t}']