X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=engines%2Fe_sureware.c;h=958b15202c9c4e1ad13403ffe2768ca74b7276ac;hp=424b82fd98f72776046d31d893a7909fd5b15573;hb=c329c6bac723dca746506d406517daf4463e501b;hpb=3eeaab4bed46e3320947d0f609b82007b65b5a46 diff --git a/engines/e_sureware.c b/engines/e_sureware.c index 424b82fd98..958b15202c 100644 --- a/engines/e_sureware.c +++ b/engines/e_sureware.c @@ -97,8 +97,8 @@ static int surewarehk_rsa_sign(int flen,const unsigned char *from,unsigned char /* RAND stuff */ static int surewarehk_rand_bytes(unsigned char *buf, int num); -static void surewarehk_rand_seed(const void *buf, int num); -static void surewarehk_rand_add(const void *buf, int num, double entropy); +static int surewarehk_rand_seed(const void *buf, int num); +static int surewarehk_rand_add(const void *buf, int num, double entropy); /* KM stuff */ static EVP_PKEY *surewarehk_load_privkey(ENGINE *e, const char *key_id, @@ -629,24 +629,29 @@ static int surewarehk_rand_bytes(unsigned char *buf, int num) return ret==1 ? 1 : 0; } -static void surewarehk_rand_seed(const void *buf, int num) +static int surewarehk_rand_seed(const void *buf, int num) { int ret=0; char msg[64]="ENGINE_rand_seed"; if(!p_surewarehk_Rand_Seed) { SUREWAREerr(SUREWARE_F_SUREWAREHK_RAND_SEED,ENGINE_R_NOT_INITIALISED); + return 0; } else { ret = p_surewarehk_Rand_Seed(msg,buf, num); surewarehk_error_handling(msg,SUREWARE_F_SUREWAREHK_RAND_SEED,ret); + if (ret == 1) + return 1; + else + return 0; } } -static void surewarehk_rand_add(const void *buf, int num, double entropy) +static int surewarehk_rand_add(const void *buf, int num, double entropy) { - surewarehk_rand_seed(buf,num); + return surewarehk_rand_seed(buf,num); } static EVP_PKEY* sureware_load_public(ENGINE *e,const char *key_id,char *hptr,unsigned long el,char keytype) @@ -758,8 +763,6 @@ static EVP_PKEY* sureware_load_public(ENGINE *e,const char *key_id,char *hptr,un } return res; err: - if (res) - EVP_PKEY_free(res); #ifndef OPENSSL_NO_RSA if (rsatmp) RSA_free(rsatmp); @@ -976,11 +979,13 @@ static DSA_SIG * surewarehk_dsa_do_sign(const unsigned char *from, int flen, DSA if (!p_surewarehk_Dsa_Sign) { SUREWAREerr(SUREWARE_F_SUREWAREHK_DSA_DO_SIGN,ENGINE_R_NOT_INITIALISED); + goto err; } /* extract ref to private key */ else if (!(hptr=DSA_get_ex_data(dsa, dsaHndidx))) { SUREWAREerr(SUREWARE_F_SUREWAREHK_DSA_DO_SIGN,SUREWARE_R_MISSING_KEY_COMPONENTS); + goto err; } else {