]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
crypto/bio/bss_acpt: set b->init only on successful BIO_parse_hostserv
authorJoshua Rogers <MegaManSec@users.noreply.github.com>
Sat, 11 Oct 2025 21:43:38 +0000 (05:43 +0800)
committerTomas Mraz <tomas@openssl.org>
Tue, 18 Nov 2025 16:56:08 +0000 (17:56 +0100)
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 <MegaManSec@users.noreply.github.com>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
(Merged from https://github.com/openssl/openssl/pull/28912)

crypto/bio/bss_acpt.c

index 23f933ce4c864d2fecdc2657b4bd3e8b39a187b5..7c55cc05def3c562a3bccd62342db3d3c6c16cb2 100644 (file)
@@ -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)