From: Joshua Rogers Date: Sat, 11 Oct 2025 21:43:38 +0000 (+0800) Subject: crypto/bio/bss_acpt: set b->init only on successful BIO_parse_hostserv X-Git-Tag: 3.6-PRE-CLANG-FORMAT-WEBKIT~56 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=83f1540da6e962fb55857b59b7d237451ca7c024;p=thirdparty%2Fopenssl.git crypto/bio/bss_acpt: set b->init only on successful BIO_parse_hostserv BIO_C_SET_ACCEPT with num == 0 unconditionally set b->init = 1 even if BIO_parse_hostserv failed. Only mark the BIO initialized when parsing succeeds to avoid inconsistent state. Signed-off-by: Joshua Rogers Reviewed-by: Saša Nedvědický Reviewed-by: Dmitry Belyavskiy (Merged from https://github.com/openssl/openssl/pull/28912) (cherry picked from commit bc8a449ef7409ffe1e859d3e526e8d2a9f693d3d) --- diff --git a/crypto/bio/bss_acpt.c b/crypto/bio/bss_acpt.c index 23f933ce4c8..7c55cc05def 100644 --- a/crypto/bio/bss_acpt.c +++ b/crypto/bio/bss_acpt.c @@ -436,7 +436,8 @@ static long acpt_ctrl(BIO *b, int cmd, long num, void *ptr) BIO_PARSE_PRIO_SERV); if (hold_serv != data->param_serv) OPENSSL_free(hold_serv); - b->init = 1; + if (ret > 0) + b->init = 1; } else if (num == 1) { OPENSSL_free(data->param_serv); if ((data->param_serv = OPENSSL_strdup(ptr)) == NULL)