]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
Fix memleaks in cmd_RecordPadding()
authorHolger Dengler <dengler@linux.ibm.com>
Mon, 11 Nov 2024 10:29:12 +0000 (11:29 +0100)
committerTomas Mraz <tomas@openssl.org>
Wed, 13 Nov 2024 11:00:45 +0000 (12:00 +0100)
Free the internal copy of parameter `value` on each early
exit.

Fixes #25906

Signed-off-by: Holger Dengler <dengler@linux.ibm.com>
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25926)

(cherry picked from commit 0abbd3e5ac0a3a7af69849b1a5010b4f0616ca37)

ssl/ssl_conf.c

index 5e2d7c1c98dbd50f114a773ef7f9ec6cd6b519a9..e5465dbc5110969ea20eaf46285194db2dd26f5a 100644 (file)
@@ -664,22 +664,19 @@ static int cmd_RecordPadding(SSL_CONF_CTX *cctx, const char *value)
 
     copy = OPENSSL_strdup(value);
     if (copy == NULL)
-        return 0;
+        goto out;
     commap = strstr(copy, ",");
     if (commap != NULL) {
         *commap = '\0';
-        if (*(commap + 1) == '\0') {
-            OPENSSL_free(copy);
-            return 0;
-        }
+        if (*(commap + 1) == '\0')
+            goto out;
         if (!OPENSSL_strtoul(commap + 1, &endptr, 0, &hs_padding))
-            return 0;
+            goto out;
     }
     if (!OPENSSL_strtoul(copy, &endptr, 0, &block_padding))
-        return 0;
+        goto out;
     if (commap == NULL)
         hs_padding = block_padding;
-    OPENSSL_free(copy);
 
     /*
      * All we care about are non-negative values,
@@ -691,6 +688,8 @@ static int cmd_RecordPadding(SSL_CONF_CTX *cctx, const char *value)
     if (cctx->ssl)
         rv = SSL_set_block_padding_ex(cctx->ssl, (size_t)block_padding,
                                       (size_t)hs_padding);
+out:
+    OPENSSL_free(copy);
     return rv;
 }