Commit 2f97c34973 for openssl.org

commit 2f97c34973866bff7d98603d24de370128d6c8f1
Author: Bob Beck <beck@openssl.org>
Date:   Wed Jun 17 20:01:05 2026 -0600

    Decouple provider OSSL_FUNC_BIO_VSNPRINTF dispatch from public BIO_vsnprintf().

    Add a static core_bio_vsnprintf() helper with the BIO_vsnprintf
    semantics, and point the dispatch entry at it instead of the deprecated
    public symbol. Very similar to the existing ossl_core_bio_vprintf().

    Reviewed-by: Neil Horman <nhorman@openssl.org>
    Reviewed-by: Andrew Dinh <andrewd@openssl.org>
    MergeDate: Wed Aug 26 16:20:29 2026
    (Merged from https://github.com/openssl/openssl/pull/31640)

diff --git a/crypto/provider_core.c b/crypto/provider_core.c
index 93732995be..c3349881ef 100644
--- a/crypto/provider_core.c
+++ b/crypto/provider_core.c
@@ -8,6 +8,7 @@
  */

 #include <assert.h>
+#include <stdio.h>
 #include <openssl/core.h>
 #include <openssl/core_dispatch.h>
 #include <openssl/core_names.h>
@@ -2283,7 +2284,9 @@ OSSL_FUNC_BIO_puts_fn ossl_core_bio_puts;
 OSSL_FUNC_BIO_up_ref_fn ossl_core_bio_up_ref;
 OSSL_FUNC_BIO_free_fn ossl_core_bio_free;
 OSSL_FUNC_BIO_vprintf_fn ossl_core_bio_vprintf;
-OSSL_FUNC_BIO_vsnprintf_fn BIO_vsnprintf;
+#ifndef FIPS_MODULE
+static OSSL_FUNC_BIO_vsnprintf_fn core_bio_vsnprintf;
+#endif
 static OSSL_FUNC_indicator_cb_fn core_indicator_get_callback;
 static OSSL_FUNC_self_test_cb_fn core_self_test_get_callback;
 static OSSL_FUNC_get_entropy_fn rand_get_entropy;
@@ -2586,6 +2589,18 @@ static int core_obj_create(const OSSL_CORE_HANDLE *prov, const char *oid,
 /*
  * Functions provided by the core.
  */
+#ifndef FIPS_MODULE
+static int core_bio_vsnprintf(char *buf, size_t n, const char *format,
+    va_list args)
+{
+    int ret = vsnprintf(buf, n, format, args);
+
+    if ((size_t)ret >= n)
+        ret = -1;
+    return ret;
+}
+#endif
+
 static const OSSL_DISPATCH core_dispatch_[] = {
     { OSSL_FUNC_CORE_GETTABLE_PARAMS, (void (*)(void))core_gettable_params },
     { OSSL_FUNC_CORE_GET_PARAMS, (void (*)(void))core_get_params },
@@ -2610,7 +2625,7 @@ static const OSSL_DISPATCH core_dispatch_[] = {
     { OSSL_FUNC_BIO_UP_REF, (void (*)(void))ossl_core_bio_up_ref },
     { OSSL_FUNC_BIO_FREE, (void (*)(void))ossl_core_bio_free },
     { OSSL_FUNC_BIO_VPRINTF, (void (*)(void))ossl_core_bio_vprintf },
-    { OSSL_FUNC_BIO_VSNPRINTF, (void (*)(void))BIO_vsnprintf },
+    { OSSL_FUNC_BIO_VSNPRINTF, (void (*)(void))core_bio_vsnprintf },
     { OSSL_FUNC_SELF_TEST_CB, (void (*)(void))core_self_test_get_callback },
     { OSSL_FUNC_INDICATOR_CB, (void (*)(void))core_indicator_get_callback },
     { OSSL_FUNC_GET_ENTROPY, (void (*)(void))rand_get_entropy },