Commit 679d8751 authored by David Benjamin's avatar David Benjamin Committed by Kurt Roeckx
Browse files

Fix memory leak in DSA redo case.



Found by clang scan-build.

Signed-off-by: default avatarKurt Roeckx <kurt@roeckx.be>
Reviewed-by: default avatarRichard Levitte <levitte@openssl.org>

RT: #4184, MR: #1496
parent 91cf7551
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -191,9 +191,6 @@ static DSA_SIG *dsa_do_sign(const unsigned char *dgst, int dlen, DSA *dsa)
    if (!BN_mod_mul(s, s, kinv, dsa->q, ctx))
        goto err;

    ret = DSA_SIG_new();
    if (ret == NULL)
        goto err;
    /*
     * Redo if r or s is zero as required by FIPS 186-3: this is very
     * unlikely.
@@ -205,11 +202,14 @@ static DSA_SIG *dsa_do_sign(const unsigned char *dgst, int dlen, DSA *dsa)
        }
        goto redo;
    }
    ret = DSA_SIG_new();
    if (ret == NULL)
        goto err;
    ret->r = r;
    ret->s = s;

 err:
    if (!ret) {
    if (ret == NULL) {
        DSAerr(DSA_F_DSA_DO_SIGN, reason);
        BN_free(r);
        BN_free(s);