err: get rid of err_free_strings_int()

Even though the function is not part of the public api, it is not
entirely removed, in order to minimize the chance of breakage,
because it is exported from libcrypto. Instead, we keep a dummy
implementation.

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/17974)
diff --git a/crypto/err/err.c b/crypto/err/err.c
index 041aab4..02fae89 100644
--- a/crypto/err/err.c
+++ b/crypto/err/err.c
@@ -327,8 +327,7 @@
 
 void err_free_strings_int(void)
 {
-    if (!RUN_ONCE(&err_string_init, do_err_strings_init))
-        return;
+    /* obsolete */
 }
 
 /********************************************************/
diff --git a/crypto/init.c b/crypto/init.c
index 6f7c443..8d51a13 100644
--- a/crypto/init.c
+++ b/crypto/init.c
@@ -170,7 +170,7 @@
 }
 
 static CRYPTO_ONCE load_crypto_strings = CRYPTO_ONCE_STATIC_INIT;
-static int load_crypto_strings_inited = 0;
+
 DEFINE_RUN_ONCE_STATIC(ossl_init_load_crypto_strings)
 {
     int ret = 1;
@@ -181,7 +181,6 @@
 #if !defined(OPENSSL_NO_ERR) && !defined(OPENSSL_NO_AUTOERRINIT)
     OSSL_TRACE(INIT, "ossl_err_load_crypto_strings()\n");
     ret = ossl_err_load_crypto_strings();
-    load_crypto_strings_inited = 1;
 #endif
     return ret;
 }
@@ -397,11 +396,6 @@
         async_deinit();
     }
 
-    if (load_crypto_strings_inited) {
-        OSSL_TRACE(INIT, "OPENSSL_cleanup: err_free_strings_int()\n");
-        err_free_strings_int();
-    }
-
     /*
      * Note that cleanup order is important:
      * - ossl_rand_cleanup_int could call an ENGINE's RAND cleanup function so
diff --git a/ssl/ssl_init.c b/ssl/ssl_init.c
index a8bcaa9..cef5735 100644
--- a/ssl/ssl_init.c
+++ b/ssl/ssl_init.c
@@ -46,7 +46,7 @@
 }
 
 static CRYPTO_ONCE ssl_strings = CRYPTO_ONCE_STATIC_INIT;
-static int ssl_strings_inited = 0;
+
 DEFINE_RUN_ONCE_STATIC(ossl_init_load_ssl_strings)
 {
     /*
@@ -56,7 +56,6 @@
 #if !defined(OPENSSL_NO_ERR) && !defined(OPENSSL_NO_AUTOERRINIT)
     OSSL_TRACE(INIT, "ossl_init_load_ssl_strings: ossl_err_load_SSL_strings()\n");
     ossl_err_load_SSL_strings();
-    ssl_strings_inited = 1;
 #endif
     return 1;
 }
@@ -82,17 +81,6 @@
         ssl_comp_free_compression_methods_int();
 #endif
     }
-
-    if (ssl_strings_inited) {
-        OSSL_TRACE(INIT, "ssl_library_stop: err_free_strings_int()\n");
-        /*
-         * If both crypto and ssl error strings are inited we will end up
-         * calling err_free_strings_int() twice - but that's ok. The second
-         * time will be a no-op. It's easier to do that than to try and track
-         * between the two libraries whether they have both been inited.
-         */
-        err_free_strings_int();
-    }
 }
 
 /*