mirror of https://github.com/openssl/openssl.git
				
				
				
			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: Tim Hudson <tjh@openssl.org> Reviewed-by: Richard Levitte <levitte@openssl.org>
This commit is contained in:
		
							parent
							
								
									6d4fb1d59e
								
							
						
					
					
						commit
						cbf6959fe8
					
				| 
						 | 
					@ -60,7 +60,7 @@
 | 
				
			||||||
#include <ctype.h>
 | 
					#include <ctype.h>
 | 
				
			||||||
#include <openssl/crypto.h>
 | 
					#include <openssl/crypto.h>
 | 
				
			||||||
#include "internal/cryptlib.h"
 | 
					#include "internal/cryptlib.h"
 | 
				
			||||||
#include <openssl/conf.h>
 | 
					#include "internal/conf.h"
 | 
				
			||||||
#include "internal/dso.h"
 | 
					#include "internal/dso.h"
 | 
				
			||||||
#include <openssl/x509.h>
 | 
					#include <openssl/x509.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -460,7 +460,7 @@ int CONF_module_add(const char *name, conf_init_func *ifunc,
 | 
				
			||||||
        return 0;
 | 
					        return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void CONF_modules_free(void)
 | 
					void conf_modules_free_intern(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    CONF_modules_finish();
 | 
					    CONF_modules_finish();
 | 
				
			||||||
    CONF_modules_unload(1);
 | 
					    CONF_modules_unload(1);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -457,7 +457,7 @@ void OPENSSL_cleanup(void)
 | 
				
			||||||
    fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: "
 | 
					    fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: "
 | 
				
			||||||
                    "rand_cleanup_intern()\n");
 | 
					                    "rand_cleanup_intern()\n");
 | 
				
			||||||
    fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: "
 | 
					    fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: "
 | 
				
			||||||
                    "CONF_modules_free()\n");
 | 
					                    "conf_modules_free_intern()\n");
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					#ifndef OPENSSL_NO_ENGINE
 | 
				
			||||||
    fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: "
 | 
					    fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: "
 | 
				
			||||||
                    "engine_cleanup_intern()\n");
 | 
					                    "engine_cleanup_intern()\n");
 | 
				
			||||||
| 
						 | 
					@ -477,11 +477,11 @@ void OPENSSL_cleanup(void)
 | 
				
			||||||
     * must be called before engine_cleanup_intern()
 | 
					     * must be called before engine_cleanup_intern()
 | 
				
			||||||
     * - ENGINEs use CRYPTO_EX_DATA and therefore, must be cleaned up
 | 
					     * - ENGINEs use CRYPTO_EX_DATA and therefore, must be cleaned up
 | 
				
			||||||
     * before the ex data handlers are wiped in CRYPTO_cleanup_all_ex_data().
 | 
					     * 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
 | 
					     * - conf_modules_free_intern() can end up in ENGINE code so must be called
 | 
				
			||||||
     * engine_cleanup_intern()
 | 
					     * before engine_cleanup_intern()
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    rand_cleanup_intern();
 | 
					    rand_cleanup_intern();
 | 
				
			||||||
    CONF_modules_free();
 | 
					    conf_modules_free_intern();
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					#ifndef OPENSSL_NO_ENGINE
 | 
				
			||||||
    engine_cleanup_intern();
 | 
					    engine_cleanup_intern();
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,10 +9,15 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 #include <openssl/conf.h>
 | 
					 #include <openssl/conf.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 void CONF_modules_free(void);
 | 
					 | 
				
			||||||
 void CONF_modules_finish(void);
 | 
					 void CONF_modules_finish(void);
 | 
				
			||||||
 void CONF_modules_unload(int all);
 | 
					 void CONF_modules_unload(int all);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Deprecated:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 #if OPENSSL_API_COMPAT < 0x10100000L
 | 
				
			||||||
 | 
					 # define CONF_modules_free()
 | 
				
			||||||
 | 
					 #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=head1 DESCRIPTION
 | 
					=head1 DESCRIPTION
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CONF_modules_free() closes down and frees up all memory allocated by all
 | 
					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
 | 
					=head1 NOTES
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Normally applications will only call CONF_modules_free() at application to
 | 
					Normally in versions of OpenSSL prior to 1.1.0 applications will only call
 | 
				
			||||||
tidy up any configuration performed.
 | 
					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
 | 
					=head1 RETURN VALUE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -39,4 +46,8 @@ None of the functions return a value.
 | 
				
			||||||
L<conf(5)>, L<OPENSSL_config(3)>,
 | 
					L<conf(5)>, L<OPENSSL_config(3)>,
 | 
				
			||||||
L<CONF_modules_load_file(3)>
 | 
					L<CONF_modules_load_file(3)>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 HISTORY
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CONF_modules_free() was deprecated in OpenSSL 1.1.0.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=cut
 | 
					=cut
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,9 +23,6 @@ Multiple calls have no effect.
 | 
				
			||||||
OPENSSL_no_config() disables configuration. If called before OPENSSL_config()
 | 
					OPENSSL_no_config() disables configuration. If called before OPENSSL_config()
 | 
				
			||||||
no configuration takes place.
 | 
					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
 | 
					If the application is built with B<OPENSSL_LOAD_CONF> defined, then a
 | 
				
			||||||
call to OpenSSL_add_all_algorithms() will implicitly call OPENSSL_config()
 | 
					call to OpenSSL_add_all_algorithms() will implicitly call OPENSSL_config()
 | 
				
			||||||
first.
 | 
					first.
 | 
				
			||||||
| 
						 | 
					@ -57,8 +54,7 @@ Neither OPENSSL_config() nor OPENSSL_no_config() return a value.
 | 
				
			||||||
=head1 SEE ALSO
 | 
					=head1 SEE ALSO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
L<conf(5)>,
 | 
					L<conf(5)>,
 | 
				
			||||||
L<CONF_modules_load_file(3)>,
 | 
					L<CONF_modules_load_file(3)>
 | 
				
			||||||
L<CONF_modules_free(3)>
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
=head1 HISTORY
 | 
					=head1 HISTORY
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -53,6 +53,7 @@ struct ossl_init_settings_st {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void openssl_config_internal(const char *config_name);
 | 
					void openssl_config_internal(const char *config_name);
 | 
				
			||||||
void openssl_no_config_internal(void);
 | 
					void openssl_no_config_internal(void);
 | 
				
			||||||
 | 
					void conf_modules_free_intern(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef __cplusplus
 | 
					#ifdef __cplusplus
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -186,7 +186,9 @@ int CONF_modules_load_file(const char *filename, const char *appname,
 | 
				
			||||||
                           unsigned long flags);
 | 
					                           unsigned long flags);
 | 
				
			||||||
void CONF_modules_unload(int all);
 | 
					void CONF_modules_unload(int all);
 | 
				
			||||||
void CONF_modules_finish(void);
 | 
					void CONF_modules_finish(void);
 | 
				
			||||||
void CONF_modules_free(void);
 | 
					#if OPENSSL_API_COMPAT < 0x10100000L
 | 
				
			||||||
 | 
					# define CONF_modules_free()
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
int CONF_module_add(const char *name, conf_init_func *ifunc,
 | 
					int CONF_module_add(const char *name, conf_init_func *ifunc,
 | 
				
			||||||
                    conf_finish_func *ffunc);
 | 
					                    conf_finish_func *ffunc);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue