get_ecdsa_sig_rs_bytes: free value of d2i_ECDSA_SIG() before return
authorPeiwei Hu <jlu.hpw@foxmail.com>
Wed, 15 Dec 2021 09:46:04 +0000 (17:46 +0800)
committerTomas Mraz <tomas@openssl.org>
Fri, 17 Dec 2021 07:58:19 +0000 (08:58 +0100)
Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/17280)

test/acvp_test.c

index d8425f0d2071cbca8aa7fff7a7a9426c564afc3a..bbc77d0ae610d69bc54a4e57814e502098d085ff 100644 (file)
@@ -218,7 +218,7 @@ static int get_ecdsa_sig_rs_bytes(const unsigned char *sig, size_t sig_len,
     r1 = ECDSA_SIG_get0_r(sign);
     s1 = ECDSA_SIG_get0_s(sign);
     if (r1 == NULL || s1 == NULL)
-        return 0;
+        goto err;
 
     r1_len = BN_num_bytes(r1);
     s1_len = BN_num_bytes(s1);
@@ -560,7 +560,7 @@ static int get_dsa_sig_rs_bytes(const unsigned char *sig, size_t sig_len,
         return 0;
     DSA_SIG_get0(sign, &r1, &s1);
     if (r1 == NULL || s1 == NULL)
-        return 0;
+        goto err;
 
     r1_len = BN_num_bytes(r1);
     s1_len = BN_num_bytes(s1);