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


apps/x509.c:1208:1: start of procedure sign()
1206.   
1207.   /* self sign */
1208. > static int sign(X509 *x, EVP_PKEY *pkey, int days, int clrext, const EVP_MD *digest, 
1209.   						CONF *conf, char *section)
1210.   	{

apps/x509.c:1214:2: 
1212.   	EVP_PKEY *pktmp;
1213.   
1214. > 	pktmp = X509_get_pubkey(x);
1215.   	EVP_PKEY_copy_parameters(pktmp,pkey);
1216.   	EVP_PKEY_save_parameters(pktmp,1);

crypto/x509/x509_cmp.c:258:1: start of procedure X509_get_pubkey()
  256.   	}
  257.   
  258. > EVP_PKEY *X509_get_pubkey(X509 *x)
  259.   	{
  260.   	if ((x == NULL) || (x->cert_info == NULL))

crypto/x509/x509_cmp.c:260:7: Taking false branch
  258.   EVP_PKEY *X509_get_pubkey(X509 *x)
  259.   	{
  260.   	if ((x == NULL) || (x->cert_info == NULL))
               ^
  261.   		return(NULL);
  262.   	return(X509_PUBKEY_get(x->cert_info->key));

crypto/x509/x509_cmp.c:260:22: Taking false branch
  258.   EVP_PKEY *X509_get_pubkey(X509 *x)
  259.   	{
  260.   	if ((x == NULL) || (x->cert_info == NULL))
                              ^
  261.   		return(NULL);
  262.   	return(X509_PUBKEY_get(x->cert_info->key));

crypto/x509/x509_cmp.c:262:2: 
  260.   	if ((x == NULL) || (x->cert_info == NULL))
  261.   		return(NULL);
  262. > 	return(X509_PUBKEY_get(x->cert_info->key));
  263.   	}
  264.   

crypto/asn1/x_pubkey.c:133:1: start of procedure X509_PUBKEY_get()
    131.   	}
    132.   
    133. > EVP_PKEY *X509_PUBKEY_get(X509_PUBKEY *key)
    134.   	{
    135.   	EVP_PKEY *ret=NULL;

crypto/asn1/x_pubkey.c:135:2: 
    133.   EVP_PKEY *X509_PUBKEY_get(X509_PUBKEY *key)
    134.   	{
    135. > 	EVP_PKEY *ret=NULL;
    136.   
    137.   	if (key == NULL) goto error;

crypto/asn1/x_pubkey.c:137:6: Taking false branch
    135.   	EVP_PKEY *ret=NULL;
    136.   
    137.   	if (key == NULL) goto error;
                ^
    138.   
    139.   	if (key->pkey != NULL)

crypto/asn1/x_pubkey.c:139:6: Taking false branch
    137.   	if (key == NULL) goto error;
    138.   
    139.   	if (key->pkey != NULL)
                ^
    140.   		{
    141.   		CRYPTO_add(&key->pkey->references, 1, CRYPTO_LOCK_EVP_PKEY);

crypto/asn1/x_pubkey.c:145:6: Taking false branch
    143.   		}
    144.   
    145.   	if (key->public_key == NULL) goto error;
                ^
    146.   
    147.   	if ((ret = EVP_PKEY_new()) == NULL)

crypto/asn1/x_pubkey.c:147:6: 
    145.   	if (key->public_key == NULL) goto error;
    146.   
    147. > 	if ((ret = EVP_PKEY_new()) == NULL)
    148.   		{
    149.   		X509err(X509_F_X509_PUBKEY_GET, ERR_R_MALLOC_FAILURE);

crypto/evp/p_lib.c:182:1: start of procedure EVP_PKEY_new()
      180.   	}
      181.   
      182. > EVP_PKEY *EVP_PKEY_new(void)
      183.   	{
      184.   	EVP_PKEY *ret;

crypto/evp/p_lib.c:186:2: 
      184.   	EVP_PKEY *ret;
      185.   
      186. > 	ret=(EVP_PKEY *)OPENSSL_malloc(sizeof(EVP_PKEY));
      187.   	if (ret == NULL)
      188.   		{

crypto/mem.c:294:1: start of procedure CRYPTO_malloc()
        292.   	}
        293.   
        294. > void *CRYPTO_malloc(int num, const char *file, int line)
        295.   	{
        296.   	void *ret = NULL;

crypto/mem.c:296:2: 
        294.   void *CRYPTO_malloc(int num, const char *file, int line)
        295.   	{
        296. > 	void *ret = NULL;
        297.   
        298.   	if (num <= 0) return NULL;

crypto/mem.c:298:6: Taking false branch
        296.   	void *ret = NULL;
        297.   
        298.   	if (num <= 0) return NULL;
                    ^
        299.   
        300.   	allow_customize = 0;

crypto/mem.c:300:2: 
        298.   	if (num <= 0) return NULL;
        299.   
        300. > 	allow_customize = 0;
        301.   	if (malloc_debug_func != NULL)
        302.   		{

crypto/mem.c:301:6: Taking true branch
        299.   
        300.   	allow_customize = 0;
        301.   	if (malloc_debug_func != NULL)
                    ^
        302.   		{
        303.   		allow_customize_debug = 0;

crypto/mem.c:303:3: 
        301.   	if (malloc_debug_func != NULL)
        302.   		{
        303. > 		allow_customize_debug = 0;
        304.   		malloc_debug_func(NULL, num, file, line, 0);
        305.   		}

crypto/mem.c:304:3: Skipping __function_pointer__(): unresolved function pointer
        302.   		{
        303.   		allow_customize_debug = 0;
        304.   		malloc_debug_func(NULL, num, file, line, 0);
                 ^
        305.   		}
        306.   	ret = malloc_ex_func(num,file,line);

crypto/mem.c:306:2: Skipping __function_pointer__(): unresolved function pointer
        304.   		malloc_debug_func(NULL, num, file, line, 0);
        305.   		}
        306.   	ret = malloc_ex_func(num,file,line);
                ^
        307.   #ifdef LEVITTE_DEBUG_MEM
        308.   	fprintf(stderr, "LEVITTE_DEBUG_MEM:         > 0x%p (%d)\n", ret, num);

crypto/mem.c:310:6: Taking true branch
        308.   	fprintf(stderr, "LEVITTE_DEBUG_MEM:         > 0x%p (%d)\n", ret, num);
        309.   #endif
        310.   	if (malloc_debug_func != NULL)
                    ^
        311.   		malloc_debug_func(ret, num, file, line, 1);
        312.   

crypto/mem.c:311:3: Skipping __function_pointer__(): unresolved function pointer
        309.   #endif
        310.   	if (malloc_debug_func != NULL)
        311.   		malloc_debug_func(ret, num, file, line, 1);
                 ^
        312.   
        313.   #ifndef OPENSSL_CPUID_OBJ

crypto/mem.c:317:12: Taking false branch
        315.            * sanitisation function can't be optimised out. NB: We only do
        316.            * this for >2Kb so the overhead doesn't bother us. */
        317.           if(ret && (num > 2048))
                          ^
        318.   	{	extern unsigned char cleanse_ctr;
        319.                   ((unsigned char *)ret)[0] = cleanse_ctr;

crypto/mem.c:323:2: 
        321.   #endif
        322.   
        323. > 	return ret;
        324.   	}
        325.   

crypto/mem.c:324:2: return from a call to CRYPTO_malloc
        322.   
        323.   	return ret;
        324.   	}
                ^
        325.   
        326.   void *CRYPTO_realloc(void *str, int num, const char *file, int line)

crypto/evp/p_lib.c:187:6: Taking true branch
      185.   
      186.   	ret=(EVP_PKEY *)OPENSSL_malloc(sizeof(EVP_PKEY));
      187.   	if (ret == NULL)
                  ^
      188.   		{
      189.   		EVPerr(EVP_F_EVP_PKEY_NEW,ERR_R_MALLOC_FAILURE);

crypto/evp/p_lib.c:189:3: 
      187.   	if (ret == NULL)
      188.   		{
      189. > 		EVPerr(EVP_F_EVP_PKEY_NEW,ERR_R_MALLOC_FAILURE);
      190.   		return(NULL);
      191.   		}

crypto/err/err.c:705:1: start of procedure ERR_put_error()
        703.   /********************************************************/
        704.   
        705. > void ERR_put_error(int lib, int func, int reason, const char *file,
        706.   	     int line)
        707.   	{

crypto/err/err.c:729:2: Skipping ERR_get_state(): empty list of specs
        727.   	}
        728.   #endif
        729.   	es=ERR_get_state();
                ^
        730.   
        731.   	es->top=(es->top+1)%ERR_NUM_ERRORS;

crypto/err/err.c:731:2: 
        729.   	es=ERR_get_state();
        730.   
        731. > 	es->top=(es->top+1)%ERR_NUM_ERRORS;
        732.   	if (es->top == es->bottom)
        733.   		es->bottom=(es->bottom+1)%ERR_NUM_ERRORS;

crypto/err/err.c:732:6: Taking false branch
        730.   
        731.   	es->top=(es->top+1)%ERR_NUM_ERRORS;
        732.   	if (es->top == es->bottom)
                    ^
        733.   		es->bottom=(es->bottom+1)%ERR_NUM_ERRORS;
        734.   	es->err_flags[es->top]=0;

crypto/err/err.c:734:2: 
        732.   	if (es->top == es->bottom)
        733.   		es->bottom=(es->bottom+1)%ERR_NUM_ERRORS;
        734. > 	es->err_flags[es->top]=0;
        735.   	es->err_buffer[es->top]=ERR_PACK(lib,func,reason);
        736.   	es->err_file[es->top]=file;

crypto/err/err.c:735:2: 
        733.   		es->bottom=(es->bottom+1)%ERR_NUM_ERRORS;
        734.   	es->err_flags[es->top]=0;
        735. > 	es->err_buffer[es->top]=ERR_PACK(lib,func,reason);
        736.   	es->err_file[es->top]=file;
        737.   	es->err_line[es->top]=line;

crypto/err/err.c:736:2: 
        734.   	es->err_flags[es->top]=0;
        735.   	es->err_buffer[es->top]=ERR_PACK(lib,func,reason);
        736. > 	es->err_file[es->top]=file;
        737.   	es->err_line[es->top]=line;
        738.   	err_clear_data(es,es->top);

crypto/err/err.c:737:2: 
        735.   	es->err_buffer[es->top]=ERR_PACK(lib,func,reason);
        736.   	es->err_file[es->top]=file;
        737. > 	es->err_line[es->top]=line;
        738.   	err_clear_data(es,es->top);
        739.   	}

crypto/err/err.c:738:2: Taking true branch
        736.   	es->err_file[es->top]=file;
        737.   	es->err_line[es->top]=line;
        738.   	err_clear_data(es,es->top);
                ^
        739.   	}
        740.   

crypto/err/err.c:738:2: Taking false branch
        736.   	es->err_file[es->top]=file;
        737.   	es->err_line[es->top]=line;
        738.   	err_clear_data(es,es->top);
                ^
        739.   	}
        740.   

crypto/err/err.c:738:2: Loop condition is false. Leaving loop
        736.   	es->err_file[es->top]=file;
        737.   	es->err_line[es->top]=line;
        738.   	err_clear_data(es,es->top);
                ^
        739.   	}
        740.   

crypto/err/err.c:739:2: return from a call to ERR_put_error
        737.   	es->err_line[es->top]=line;
        738.   	err_clear_data(es,es->top);
        739.   	}
                ^
        740.   
        741.   void ERR_clear_error(void)

crypto/evp/p_lib.c:190:3: 
      188.   		{
      189.   		EVPerr(EVP_F_EVP_PKEY_NEW,ERR_R_MALLOC_FAILURE);
      190. > 		return(NULL);
      191.   		}
      192.   	ret->type=EVP_PKEY_NONE;

crypto/evp/p_lib.c:201:2: return from a call to EVP_PKEY_new
      199.   	ret->save_parameters=1;
      200.   	return(ret);
      201.   	}
              ^
      202.   
      203.   /* Setup a public key ASN1 method and ENGINE from a NID or a string.

crypto/asn1/x_pubkey.c:147:6: Taking true branch
    145.   	if (key->public_key == NULL) goto error;
    146.   
    147.   	if ((ret = EVP_PKEY_new()) == NULL)
                ^
    148.   		{
    149.   		X509err(X509_F_X509_PUBKEY_GET, ERR_R_MALLOC_FAILURE);

crypto/asn1/x_pubkey.c:149:3: 
    147.   	if ((ret = EVP_PKEY_new()) == NULL)
    148.   		{
    149. > 		X509err(X509_F_X509_PUBKEY_GET, ERR_R_MALLOC_FAILURE);
    150.   		goto error;
    151.   		}

crypto/err/err.c:705:1: start of procedure ERR_put_error()
      703.   /********************************************************/
      704.   
      705. > void ERR_put_error(int lib, int func, int reason, const char *file,
      706.   	     int line)
      707.   	{

crypto/err/err.c:729:2: Skipping ERR_get_state(): empty list of specs
      727.   	}
      728.   #endif
      729.   	es=ERR_get_state();
              ^
      730.   
      731.   	es->top=(es->top+1)%ERR_NUM_ERRORS;

crypto/err/err.c:731:2: 
      729.   	es=ERR_get_state();
      730.   
      731. > 	es->top=(es->top+1)%ERR_NUM_ERRORS;
      732.   	if (es->top == es->bottom)
      733.   		es->bottom=(es->bottom+1)%ERR_NUM_ERRORS;

crypto/err/err.c:732:6: Taking false branch
      730.   
      731.   	es->top=(es->top+1)%ERR_NUM_ERRORS;
      732.   	if (es->top == es->bottom)
                  ^
      733.   		es->bottom=(es->bottom+1)%ERR_NUM_ERRORS;
      734.   	es->err_flags[es->top]=0;

crypto/err/err.c:734:2: 
      732.   	if (es->top == es->bottom)
      733.   		es->bottom=(es->bottom+1)%ERR_NUM_ERRORS;
      734. > 	es->err_flags[es->top]=0;
      735.   	es->err_buffer[es->top]=ERR_PACK(lib,func,reason);
      736.   	es->err_file[es->top]=file;

crypto/err/err.c:735:2: 
      733.   		es->bottom=(es->bottom+1)%ERR_NUM_ERRORS;
      734.   	es->err_flags[es->top]=0;
      735. > 	es->err_buffer[es->top]=ERR_PACK(lib,func,reason);
      736.   	es->err_file[es->top]=file;
      737.   	es->err_line[es->top]=line;

crypto/err/err.c:736:2: 
      734.   	es->err_flags[es->top]=0;
      735.   	es->err_buffer[es->top]=ERR_PACK(lib,func,reason);
      736. > 	es->err_file[es->top]=file;
      737.   	es->err_line[es->top]=line;
      738.   	err_clear_data(es,es->top);

crypto/err/err.c:737:2: 
      735.   	es->err_buffer[es->top]=ERR_PACK(lib,func,reason);
      736.   	es->err_file[es->top]=file;
      737. > 	es->err_line[es->top]=line;
      738.   	err_clear_data(es,es->top);
      739.   	}

crypto/err/err.c:738:2: Taking true branch
      736.   	es->err_file[es->top]=file;
      737.   	es->err_line[es->top]=line;
      738.   	err_clear_data(es,es->top);
              ^
      739.   	}
      740.   

crypto/err/err.c:738:2: Taking false branch
      736.   	es->err_file[es->top]=file;
      737.   	es->err_line[es->top]=line;
      738.   	err_clear_data(es,es->top);
              ^
      739.   	}
      740.   

crypto/err/err.c:738:2: Loop condition is false. Leaving loop
      736.   	es->err_file[es->top]=file;
      737.   	es->err_line[es->top]=line;
      738.   	err_clear_data(es,es->top);
              ^
      739.   	}
      740.   

crypto/err/err.c:739:2: return from a call to ERR_put_error
      737.   	es->err_line[es->top]=line;
      738.   	err_clear_data(es,es->top);
      739.   	}
              ^
      740.   
      741.   void ERR_clear_error(void)

crypto/asn1/x_pubkey.c:179:2: 
    177.   	return ret;
    178.   
    179. > 	error:
    180.   	if (ret != NULL)
    181.   		EVP_PKEY_free(ret);

crypto/asn1/x_pubkey.c:180:6: Taking false branch
    178.   
    179.   	error:
    180.   	if (ret != NULL)
                ^
    181.   		EVP_PKEY_free(ret);
    182.   	return(NULL);

crypto/asn1/x_pubkey.c:182:2: 
    180.   	if (ret != NULL)
    181.   		EVP_PKEY_free(ret);
    182. > 	return(NULL);
    183.   	}
    184.   

crypto/asn1/x_pubkey.c:183:2: return from a call to X509_PUBKEY_get
    181.   		EVP_PKEY_free(ret);
    182.   	return(NULL);
    183.   	}
            ^
    184.   
    185.   /* Now two pseudo ASN1 routines that take an EVP_PKEY structure

crypto/x509/x509_cmp.c:263:2: return from a call to X509_get_pubkey
  261.   		return(NULL);
  262.   	return(X509_PUBKEY_get(x->cert_info->key));
  263.   	}
          ^
  264.   
  265.   ASN1_BIT_STRING *X509_get0_pubkey_bitstr(const X509 *x)

apps/x509.c:1215:2: 
1213.   
1214.   	pktmp = X509_get_pubkey(x);
1215. > 	EVP_PKEY_copy_parameters(pktmp,pkey);
1216.   	EVP_PKEY_save_parameters(pktmp,1);
1217.   	EVP_PKEY_free(pktmp);

crypto/evp/p_lib.c:124:1: start of procedure EVP_PKEY_copy_parameters()
  122.   	}
  123.   
  124. > int EVP_PKEY_copy_parameters(EVP_PKEY *to, const EVP_PKEY *from)
  125.   	{
  126.   	if (to->type != from->type)

crypto/evp/p_lib.c:126:6: 
  124.   int EVP_PKEY_copy_parameters(EVP_PKEY *to, const EVP_PKEY *from)
  125.   	{
  126. > 	if (to->type != from->type)
  127.   		{
  128.   		EVPerr(EVP_F_EVP_PKEY_COPY_PARAMETERS,EVP_R_DIFFERENT_KEY_TYPES);

static int sign(X509 *x, EVP_PKEY *pkey, int days, int clrext, const EVP_MD *digest,
						CONF *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 (clrext)
		{
		while (X509_get_ext_count(x) > 0) X509_delete_ext(x, 0);
		}
	if (conf)
		{
		X509V3_CTX ctx;
		X509_set_version(x,2);
                X509V3_set_ctx(&ctx, x, x, NULL, NULL, 0);
                X509V3_set_nconf(&ctx, conf);
                if (!X509V3_EXT_add_nconf(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, int clrext, const EVP_MD *digest,\n\t\t\t\t\t\tCONF *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 (clrext)\n\t\t{\n\t\twhile (X509_get_ext_count(x) > 0) X509_delete_ext(x, 0);\n\t\t}\n\tif (conf)\n\t\t{\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_nconf(&ctx, conf);\n                if (!X509V3_EXT_add_nconf(conf, &ctx, section, x)) goto err;\n\t\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}', 'EVP_PKEY *X509_PUBKEY_get(X509_PUBKEY *key)\n\t{\n\tEVP_PKEY *ret=NULL;\n\tif (key == NULL) goto error;\n\tif (key->pkey != NULL)\n\t\t{\n\t\tCRYPTO_add(&key->pkey->references, 1, CRYPTO_LOCK_EVP_PKEY);\n\t\treturn key->pkey;\n\t\t}\n\tif (key->public_key == NULL) goto error;\n\tif ((ret = EVP_PKEY_new()) == NULL)\n\t\t{\n\t\tX509err(X509_F_X509_PUBKEY_GET, ERR_R_MALLOC_FAILURE);\n\t\tgoto error;\n\t\t}\n\tif (!EVP_PKEY_set_type(ret, OBJ_obj2nid(key->algor->algorithm)))\n\t\t{\n\t\tX509err(X509_F_X509_PUBKEY_GET,X509_R_UNSUPPORTED_ALGORITHM);\n\t\tgoto error;\n\t\t}\n\tif (ret->ameth->pub_decode)\n\t\t{\n\t\tif (!ret->ameth->pub_decode(ret, key))\n\t\t\t{\n\t\t\tX509err(X509_F_X509_PUBKEY_GET,\n\t\t\t\t\t\tX509_R_PUBLIC_KEY_DECODE_ERROR);\n\t\t\tgoto error;\n\t\t\t}\n\t\t}\n\telse\n\t\t{\n\t\tX509err(X509_F_X509_PUBKEY_GET, X509_R_METHOD_NOT_SUPPORTED);\n\t\tgoto error;\n\t\t}\n\tkey->pkey = ret;\n\tCRYPTO_add(&ret->references, 1, CRYPTO_LOCK_EVP_PKEY);\n\treturn ret;\n\terror:\n\tif (ret != NULL)\n\t\tEVP_PKEY_free(ret);\n\treturn(NULL);\n\t}', 'EVP_PKEY *EVP_PKEY_new(void)\n\t{\n\tEVP_PKEY *ret;\n\tret=(EVP_PKEY *)OPENSSL_malloc(sizeof(EVP_PKEY));\n\tif (ret == NULL)\n\t\t{\n\t\tEVPerr(EVP_F_EVP_PKEY_NEW,ERR_R_MALLOC_FAILURE);\n\t\treturn(NULL);\n\t\t}\n\tret->type=EVP_PKEY_NONE;\n\tret->save_type=EVP_PKEY_NONE;\n\tret->references=1;\n\tret->ameth=NULL;\n\tret->engine=NULL;\n\tret->pkey.ptr=NULL;\n\tret->attributes=NULL;\n\tret->save_parameters=1;\n\treturn(ret);\n\t}', 'void *CRYPTO_malloc(int num, const char *file, int line)\n\t{\n\tvoid *ret = NULL;\n\tif (num <= 0) return NULL;\n\tallow_customize = 0;\n\tif (malloc_debug_func != NULL)\n\t\t{\n\t\tallow_customize_debug = 0;\n\t\tmalloc_debug_func(NULL, num, file, line, 0);\n\t\t}\n\tret = malloc_ex_func(num,file,line);\n#ifdef LEVITTE_DEBUG_MEM\n\tfprintf(stderr, "LEVITTE_DEBUG_MEM:         > 0x%p (%d)\\n", ret, num);\n#endif\n\tif (malloc_debug_func != NULL)\n\t\tmalloc_debug_func(ret, num, file, line, 1);\n#ifndef OPENSSL_CPUID_OBJ\n        if(ret && (num > 2048))\n\t{\textern unsigned char cleanse_ctr;\n                ((unsigned char *)ret)[0] = cleanse_ctr;\n\t}\n#endif\n\treturn ret;\n\t}', 'void ERR_put_error(int lib, int func, int reason, const char *file,\n\t     int line)\n\t{\n\tERR_STATE *es;\n#ifdef _OSD_POSIX\n\tif (strncmp(file,"*POSIX(", sizeof("*POSIX(")-1) == 0) {\n\t\tchar *end;\n\t\tfile += sizeof("*POSIX(")-1;\n\t\tend = &file[strlen(file)-1];\n\t\tif (*end == \')\')\n\t\t\t*end = \'\\0\';\n\t\tif ((end = strrchr(file, \'/\')) != NULL)\n\t\t\tfile = &end[1];\n\t}\n#endif\n\tes=ERR_get_state();\n\tes->top=(es->top+1)%ERR_NUM_ERRORS;\n\tif (es->top == es->bottom)\n\t\tes->bottom=(es->bottom+1)%ERR_NUM_ERRORS;\n\tes->err_flags[es->top]=0;\n\tes->err_buffer[es->top]=ERR_PACK(lib,func,reason);\n\tes->err_file[es->top]=file;\n\tes->err_line[es->top]=line;\n\terr_clear_data(es,es->top);\n\t}', 'int EVP_PKEY_copy_parameters(EVP_PKEY *to, const EVP_PKEY *from)\n\t{\n\tif (to->type != from->type)\n\t\t{\n\t\tEVPerr(EVP_F_EVP_PKEY_COPY_PARAMETERS,EVP_R_DIFFERENT_KEY_TYPES);\n\t\tgoto err;\n\t\t}\n\tif (EVP_PKEY_missing_parameters(from))\n\t\t{\n\t\tEVPerr(EVP_F_EVP_PKEY_COPY_PARAMETERS,EVP_R_MISSING_PARAMETERS);\n\t\tgoto err;\n\t\t}\n\tif (from->ameth && from->ameth->param_copy)\n\t\treturn from->ameth->param_copy(to, from);\nerr:\n\treturn 0;\n\t}']