From: Tomas Mraz Date: Mon, 3 Oct 2022 08:40:40 +0000 (+0200) Subject: err_set_debug(): Prevent possible recursion on malloc failure X-Git-Tag: openssl-3.2.0-alpha1~1970 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ed49476a16b8ff2688a53a2ba7e011e6911620f8;p=thirdparty%2Fopenssl.git err_set_debug(): Prevent possible recursion on malloc failure Fixes #19331 Reviewed-by: Paul Dale Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/19332) --- diff --git a/crypto/err/err_local.h b/crypto/err/err_local.h index d4e19dff241..7d785ab6181 100644 --- a/crypto/err/err_local.h +++ b/crypto/err/err_local.h @@ -7,6 +7,7 @@ * https://www.openssl.org/source/license.html */ +#include #include #include @@ -56,8 +57,11 @@ static ossl_inline void err_set_debug(ERR_STATE *es, size_t i, OPENSSL_free(es->err_file[i]); if (file == NULL || file[0] == '\0') es->err_file[i] = NULL; - else - es->err_file[i] = OPENSSL_strdup(file); + else if ((es->err_file[i] = CRYPTO_malloc(strlen(file) + 1, + NULL, 0)) != NULL) + /* We cannot use OPENSSL_strdup due to possible recursion */ + strcpy(es->err_file[i], file); + es->err_line[i] = line; OPENSSL_free(es->err_func[i]); if (fn == NULL || fn[0] == '\0')