X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=crypto%2Fdsa%2Fdsa_depr.c;fp=crypto%2Fdsa%2Fdsa_depr.c;h=35c3423f29f0210f178bb7d581346b1913db698e;hp=f2da680eb466a4c1ff9d888b887fc920a8cfd347;hb=c0d439019460def565bb115ecef749833eb4c299;hpb=829ccf6ab6aab03a3f60f644027b43a5d2035bf8 diff --git a/crypto/dsa/dsa_depr.c b/crypto/dsa/dsa_depr.c index f2da680eb4..35c3423f29 100644 --- a/crypto/dsa/dsa_depr.c +++ b/crypto/dsa/dsa_depr.c @@ -89,16 +89,26 @@ DSA *DSA_generate_parameters(int bits, void (*callback)(int, int, void *), void *cb_arg) { - BN_GENCB cb; + BN_GENCB *cb; DSA *ret; if ((ret=DSA_new()) == NULL) return NULL; + cb = BN_GENCB_new(); + if(!cb) + { + DSA_free(ret); + return NULL; + } - BN_GENCB_set_old(&cb, callback, cb_arg); + BN_GENCB_set_old(cb, callback, cb_arg); if(DSA_generate_parameters_ex(ret, bits, seed_in, seed_len, - counter_ret, h_ret, &cb)) + counter_ret, h_ret, cb)) + { + BN_GENCB_free(cb); return ret; + } + BN_GENCB_free(cb); DSA_free(ret); return NULL; }