]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
Fix memory leaks in ossl_quic_calculate_retry_integrity_tag()
authorNiels Dossche <7771979+nielsdos@users.noreply.github.com>
Tue, 8 Oct 2024 14:03:13 +0000 (16:03 +0200)
committerTomas Mraz <tomas@openssl.org>
Wed, 23 Oct 2024 13:14:08 +0000 (15:14 +0200)
Fixes #25625

Several error paths return 0 directly instead of going to err to clean
up the objects.

CLA: trivial

Reviewed-by: Tom Cosgrove <tom.cosgrove@arm.com>
Reviewed-by: Kurt Roeckx <kurt@roeckx.be>
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25636)

ssl/quic/quic_wire_pkt.c

index acb926ad38a045ac3961ebb4ff01161afeb8c300..00f4afb7c082c932b37fc8ba38bf8ed030dc2406 100644 (file)
@@ -887,7 +887,7 @@ int ossl_quic_calculate_retry_integrity_tag(OSSL_LIB_CTX *libctx,
 
     if (!WPACKET_get_total_written(&wpkt, &hdr_enc_len)) {
         ERR_raise(ERR_LIB_SSL, ERR_R_CRYPTO_LIB);
-        return 0;
+        goto err;
     }
 
     /* Create and initialise cipher context. */
@@ -911,27 +911,27 @@ int ossl_quic_calculate_retry_integrity_tag(OSSL_LIB_CTX *libctx,
     /* Feed packet header as AAD data. */
     if (EVP_CipherUpdate(cctx, NULL, &l, buf, hdr_enc_len) != 1) {
         ERR_raise(ERR_LIB_SSL, ERR_R_EVP_LIB);
-        return 0;
+        goto err;
     }
 
     /* Feed packet body as AAD data. */
     if (EVP_CipherUpdate(cctx, NULL, &l, hdr->data,
                          hdr->len - QUIC_RETRY_INTEGRITY_TAG_LEN) != 1) {
         ERR_raise(ERR_LIB_SSL, ERR_R_EVP_LIB);
-        return 0;
+        goto err;
     }
 
     /* Finalise and get tag. */
     if (EVP_CipherFinal_ex(cctx, NULL, &l2) != 1) {
         ERR_raise(ERR_LIB_SSL, ERR_R_EVP_LIB);
-        return 0;
+        goto err;
     }
 
     if (EVP_CIPHER_CTX_ctrl(cctx, EVP_CTRL_AEAD_GET_TAG,
                             QUIC_RETRY_INTEGRITY_TAG_LEN,
                             tag) != 1) {
         ERR_raise(ERR_LIB_SSL, ERR_R_EVP_LIB);
-        return 0;
+        goto err;
     }
 
     ok = 1;