summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBernd Edlinger <bernd.edlinger@hotmail.de>2023-11-06 11:03:05 +0100
committerHugo Landau <hlandau@openssl.org>2023-11-08 08:20:22 +0000
commit9f9dc855adf7e9a65b4a0de7fa1ea19d0a55094f (patch)
tree77ff29a478e1670eb36bcdbd912ad0ea61fcdc4d
parent0f96c6e39ad6f60c3166b8356fa46756b20226d0 (diff)
Fix a possible memory leak in custom_ext_add
Reviewed-by: Hugo Landau <hlandau@openssl.org> Reviewed-by: Matt Caswell <matt@openssl.org> Reviewed-by: Paul Dale <pauli@openssl.org> (Merged from https://github.com/openssl/openssl/pull/22638) (cherry picked from commit 668a144f0a6dcfb9f904043c29372cbf19856c39)
-rw-r--r--ssl/statem/extensions_cust.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/ssl/statem/extensions_cust.c b/ssl/statem/extensions_cust.c
index 8b296f1f59..7c049d2970 100644
--- a/ssl/statem/extensions_cust.c
+++ b/ssl/statem/extensions_cust.c
@@ -225,6 +225,9 @@ int custom_ext_add(SSL_CONNECTION *s, int context, WPACKET *pkt, X509 *x,
|| !WPACKET_start_sub_packet_u16(pkt)
|| (outlen > 0 && !WPACKET_memcpy(pkt, out, outlen))
|| !WPACKET_close(pkt)) {
+ if (meth->free_cb != NULL)
+ meth->free_cb(SSL_CONNECTION_GET_SSL(s), meth->ext_type, context,
+ out, meth->add_arg);
if (!for_comp)
SSLfatal(s, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR);
return 0;
@@ -234,6 +237,9 @@ int custom_ext_add(SSL_CONNECTION *s, int context, WPACKET *pkt, X509 *x,
* We can't send duplicates: code logic should prevent this.
*/
if (!ossl_assert((meth->ext_flags & SSL_EXT_FLAG_SENT) == 0)) {
+ if (meth->free_cb != NULL)
+ meth->free_cb(SSL_CONNECTION_GET_SSL(s), meth->ext_type,
+ context, out, meth->add_arg);
if (!for_comp)
SSLfatal(s, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR);
return 0;