RT3192: spurious error in DSA verify
authorMatt Caswell <matt@openssl.org>
Tue, 9 Sep 2014 20:50:06 +0000 (16:50 -0400)
committerRich Salz <rsalz@openssl.org>
Tue, 9 Sep 2014 21:10:57 +0000 (17:10 -0400)
This is funny; Ben commented in the source, Matt opend a ticket,
and Rich is doing the submit.  Need more code-review? :)

Reviewed-by: Dr. Stephen Henson <steve@openssl.org>
(cherry picked from commit eb63bce040d1cc6147d256f516b59552c018e29b)

crypto/dsa/dsa_ossl.c

index b3d78e524cf4f90ebec6be28e798da53672b38dc..0c517c3b5da35c90e528edad26bfd4e1592a232a 100644 (file)
@@ -387,9 +387,7 @@ static int dsa_do_verify(const unsigned char *dgst, int dgst_len, DSA_SIG *sig,
        ret=(BN_ucmp(&u1, sig->r) == 0);
 
        err:
-       /* XXX: surely this is wrong - if ret is 0, it just didn't verify;
-          there is no error in BN. Test should be ret == -1 (Ben) */
-       if (ret != 1) DSAerr(DSA_F_DSA_DO_VERIFY,ERR_R_BN_LIB);
+       if (ret < 0) DSAerr(DSA_F_DSA_DO_VERIFY,ERR_R_BN_LIB);
        if (ctx != NULL) BN_CTX_free(ctx);
        BN_free(&u1);
        BN_free(&u2);