Commit 6827cb36 authored by Matt Caswell's avatar Matt Caswell
Browse files

Deprecate ERR_free_strings() and make it a no-op



ERR_free_strings() should not be called expicitly - we should leave
auto-deinit to clean this up instead.

Reviewed-by: default avatarTim Hudson <tjh@openssl.org>
Reviewed-by: default avatarRichard Levitte <levitte@openssl.org>
parent 02a247e0
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -117,7 +117,7 @@
#include <openssl/crypto.h>
#include <openssl/buffer.h>
#include <openssl/bio.h>
#include <openssl/err.h>
#include "internal/err.h"
#include <openssl/opensslconf.h>

static void err_load_strings(int lib, ERR_STRING_DATA *str);
@@ -447,7 +447,7 @@ void ERR_unload_strings(int lib, ERR_STRING_DATA *str)
    CRYPTO_THREAD_unlock(err_string_lock);
}

void ERR_free_strings(void)
void err_free_strings_intern(void)
{
    CRYPTO_THREAD_run_once(&err_string_init, do_err_strings_init);

+2 −2
Original line number Diff line number Diff line
@@ -444,9 +444,9 @@ void OPENSSL_cleanup(void)
    if (load_crypto_strings_inited) {
#ifdef OPENSSL_INIT_DEBUG
        fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: "
                        "ERR_free_strings()\n");
                        "err_free_strings_intern()\n");
#endif
        ERR_free_strings();
        err_free_strings_intern();
    }

    CRYPTO_THREAD_cleanup_local(&threadstopkey);
+18 −8
Original line number Diff line number Diff line
@@ -7,26 +7,36 @@ load and free error strings

=head1 SYNOPSIS

Deprecated:

 #include <openssl/err.h>

 void ERR_load_crypto_strings(void);
 void ERR_free_strings(void);
 #if OPENSSL_API_COMPAT < 0x10100000L
 # define ERR_load_crypto_strings() \
     OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL)
 # define ERR_free_strings()
 #endif

 #include <openssl/ssl.h>

 void SSL_load_error_strings(void);
 #if OPENSSL_API_COMPAT < 0x10100000L
 # define SSL_load_error_strings() \
     OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS \
                     | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL)
 #endif

=head1 DESCRIPTION

All of the following functions are deprecated from OpenSSL 1.1.0. No explicit
initialisation or de-initialisation is necessary. See L<OPENSSL_init_crypto(3)>
and L<OPENSSL_init_ssl(3)>.

ERR_load_crypto_strings() registers the error strings for all
B<libcrypto> functions. SSL_load_error_strings() does the same,
but also registers the B<libssl> error strings.

One of these functions should be called before generating
textual error messages. However, this is not required when memory
usage is an issue.

ERR_free_strings() frees all previously loaded error strings.
In versions of OpenSSL prior to 1.1.0 ERR_free_strings() freed all previously
loaded error strings. However from OpenSSL 1.1.0 it does nothing.

=head1 RETURN VALUES

+5 −1
Original line number Diff line number Diff line
@@ -33,7 +33,6 @@ err - error codes
 void ERR_print_errors_fp(FILE *fp);

 void ERR_load_crypto_strings(void);
 void ERR_free_strings(void);

 void ERR_put_error(int lib, int func, int reason, const char *file,
         int line);
@@ -49,6 +48,11 @@ Deprecated:
 void ERR_remove_state(unsigned long pid);
 #endif

 #if OPENSSL_API_COMPAT < 0x10100000L
 # define ERR_free_strings()
 #endif


=head1 DESCRIPTION

When a call to the OpenSSL library fails, this is usually signaled
+1 −0
Original line number Diff line number Diff line
@@ -56,3 +56,4 @@
 */

void err_load_crypto_strings_intern(void);
void err_free_strings_intern(void);
Loading