Submitted by: Dmitry Ivanov <vonami@gmail.com>
Don't leave dangling pointers in GOST engine if calls fail.
This commit is contained in:
parent
45d6a15ae9
commit
03fd7f27db
@ -136,12 +136,14 @@ DSA_SIG *gost2001_do_sign(const unsigned char *dgst,int dlen, EC_KEY *eckey)
|
|||||||
{
|
{
|
||||||
GOSTerr(GOST_F_GOST2001_DO_SIGN,GOST_R_RANDOM_NUMBER_GENERATOR_FAILED);
|
GOSTerr(GOST_F_GOST2001_DO_SIGN,GOST_R_RANDOM_NUMBER_GENERATOR_FAILED);
|
||||||
DSA_SIG_free(newsig);
|
DSA_SIG_free(newsig);
|
||||||
|
newsig = NULL;
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
if (!EC_POINT_mul(group,C,k,NULL,NULL,ctx))
|
if (!EC_POINT_mul(group,C,k,NULL,NULL,ctx))
|
||||||
{
|
{
|
||||||
GOSTerr(GOST_F_GOST2001_DO_SIGN,ERR_R_EC_LIB);
|
GOSTerr(GOST_F_GOST2001_DO_SIGN,ERR_R_EC_LIB);
|
||||||
DSA_SIG_free(newsig);
|
DSA_SIG_free(newsig);
|
||||||
|
newsig = NULL;
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
if (!X) X=BN_CTX_get(ctx);
|
if (!X) X=BN_CTX_get(ctx);
|
||||||
@ -149,6 +151,7 @@ DSA_SIG *gost2001_do_sign(const unsigned char *dgst,int dlen, EC_KEY *eckey)
|
|||||||
{
|
{
|
||||||
GOSTerr(GOST_F_GOST2001_DO_SIGN,ERR_R_EC_LIB);
|
GOSTerr(GOST_F_GOST2001_DO_SIGN,ERR_R_EC_LIB);
|
||||||
DSA_SIG_free(newsig);
|
DSA_SIG_free(newsig);
|
||||||
|
newsig = NULL;
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
if (!r) r=BN_CTX_get(ctx);
|
if (!r) r=BN_CTX_get(ctx);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user