Commit cbf6959f authored by Matt Caswell's avatar Matt Caswell
Browse files

Deprecate CONF_modules_free() and make it a no-op



CONF_modules_free() 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 6d4fb1d5
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -60,7 +60,7 @@
#include <ctype.h>
#include <openssl/crypto.h>
#include "internal/cryptlib.h"
#include <openssl/conf.h>
#include "internal/conf.h"
#include "internal/dso.h"
#include <openssl/x509.h>

@@ -460,7 +460,7 @@ int CONF_module_add(const char *name, conf_init_func *ifunc,
        return 0;
}

void CONF_modules_free(void)
void conf_modules_free_intern(void)
{
    CONF_modules_finish();
    CONF_modules_unload(1);
+4 −4
Original line number Diff line number Diff line
@@ -457,7 +457,7 @@ void OPENSSL_cleanup(void)
    fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: "
                    "rand_cleanup_intern()\n");
    fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: "
                    "CONF_modules_free()\n");
                    "conf_modules_free_intern()\n");
#ifndef OPENSSL_NO_ENGINE
    fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: "
                    "engine_cleanup_intern()\n");
@@ -477,11 +477,11 @@ void OPENSSL_cleanup(void)
     * must be called before engine_cleanup_intern()
     * - ENGINEs use CRYPTO_EX_DATA and therefore, must be cleaned up
     * before the ex data handlers are wiped in CRYPTO_cleanup_all_ex_data().
     * - CONF_modules_free() can end up in ENGINE code so must be called before
     * engine_cleanup_intern()
     * - conf_modules_free_intern() can end up in ENGINE code so must be called
     * before engine_cleanup_intern()
     */
    rand_cleanup_intern();
    CONF_modules_free();
    conf_modules_free_intern();
#ifndef OPENSSL_NO_ENGINE
    engine_cleanup_intern();
#endif
+14 −3
Original line number Diff line number Diff line
@@ -9,10 +9,15 @@

 #include <openssl/conf.h>

 void CONF_modules_free(void);
 void CONF_modules_finish(void);
 void CONF_modules_unload(int all);

Deprecated:

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

=head1 DESCRIPTION

CONF_modules_free() closes down and frees up all memory allocated by all
@@ -27,8 +32,10 @@ B<all> is B<1> all modules, including builtin modules will be unloaded.

=head1 NOTES

Normally applications will only call CONF_modules_free() at application to
tidy up any configuration performed.
Normally in versions of OpenSSL prior to 1.1.0 applications will only call
CONF_modules_free() at application to tidy up any configuration performed. From
1.1.0 CONF_modules_free() is deprecated an no explicit CONF cleanup as required
at all. For more information see L<OPENSSL_init_crypto(3)>.

=head1 RETURN VALUE

@@ -39,4 +46,8 @@ None of the functions return a value.
L<conf(5)>, L<OPENSSL_config(3)>,
L<CONF_modules_load_file(3)>

=head1 HISTORY

CONF_modules_free() was deprecated in OpenSSL 1.1.0.

=cut
+1 −5
Original line number Diff line number Diff line
@@ -23,9 +23,6 @@ Multiple calls have no effect.
OPENSSL_no_config() disables configuration. If called before OPENSSL_config()
no configuration takes place.

Applications should free up configuration at application closedown by calling
CONF_modules_free().

If the application is built with B<OPENSSL_LOAD_CONF> defined, then a
call to OpenSSL_add_all_algorithms() will implicitly call OPENSSL_config()
first.
@@ -57,8 +54,7 @@ Neither OPENSSL_config() nor OPENSSL_no_config() return a value.
=head1 SEE ALSO

L<conf(5)>,
L<CONF_modules_load_file(3)>,
L<CONF_modules_free(3)>
L<CONF_modules_load_file(3)>

=head1 HISTORY

+1 −0
Original line number Diff line number Diff line
@@ -53,6 +53,7 @@ struct ossl_init_settings_st {

void openssl_config_internal(const char *config_name);
void openssl_no_config_internal(void);
void conf_modules_free_intern(void);

#ifdef __cplusplus
}
Loading