提交 dae00d63 编写于 作者: M Matt Caswell

Add error return for OPENSSL_INIT_set_config_filename()

The OPENSSL_INIT_set_config_filename() function can fail so ensure that it
provides a suitable error code.

GitHub Issue #920
Reviewed-by: NRich Salz <rsalz@openssl.org>
上级 7d37818d
...@@ -339,11 +339,21 @@ OPENSSL_INIT_SETTINGS *OPENSSL_INIT_new(void) ...@@ -339,11 +339,21 @@ OPENSSL_INIT_SETTINGS *OPENSSL_INIT_new(void)
#ifndef OPENSSL_NO_STDIO #ifndef OPENSSL_NO_STDIO
void OPENSSL_INIT_set_config_filename(OPENSSL_INIT_SETTINGS *settings, int OPENSSL_INIT_set_config_filename(OPENSSL_INIT_SETTINGS *settings,
const char *config_file) const char *config_file)
{ {
char *new_config_file = NULL;
if (config_file != NULL) {
new_config_file = strdup(config_file);
if (new_config_file == NULL)
return 0;
}
free(settings->config_name); free(settings->config_name);
settings->config_name = config_file == NULL ? NULL : strdup(config_file); settings->config_name = new_config_file;
return 1;
} }
#endif #endif
......
...@@ -16,8 +16,9 @@ initialisation and deinitialisation functions ...@@ -16,8 +16,9 @@ initialisation and deinitialisation functions
void OPENSSL_thread_stop(void); void OPENSSL_thread_stop(void);
OPENSSL_INIT_SETTINGS *OPENSSL_init_new(void); OPENSSL_INIT_SETTINGS *OPENSSL_init_new(void);
OPENSSL_INIT_set_config_filename(OPENSSL_INIT_SETTINGS *init, const char* name); int OPENSSL_INIT_set_config_filename(OPENSSL_INIT_SETTINGS *init,
OPENSSL_INIT_free(OPENSSL_INIT_SETTINGS *init); const char* name);
void OPENSSL_INIT_free(OPENSSL_INIT_SETTINGS *init);
=head1 DESCRIPTION =head1 DESCRIPTION
...@@ -208,8 +209,8 @@ using static linking should also call OPENSSL_thread_stop(). ...@@ -208,8 +209,8 @@ using static linking should also call OPENSSL_thread_stop().
=head1 RETURN VALUES =head1 RETURN VALUES
The functions OPENSSL_init_crypto and OPENSSL_atexit() returns 1 on success or The functions OPENSSL_init_crypto, OPENSSL_atexit() and
0 on error. OPENSSL_INIT_set_config_filename() return 1 on success or 0 on error.
=head1 SEE ALSO =head1 SEE ALSO
...@@ -218,7 +219,8 @@ L<OPENSSL_init_ssl(3)> ...@@ -218,7 +219,8 @@ L<OPENSSL_init_ssl(3)>
=head1 HISTORY =head1 HISTORY
The OPENSSL_init_crypto(), OPENSSL_cleanup(), OPENSSL_atexit(), The OPENSSL_init_crypto(), OPENSSL_cleanup(), OPENSSL_atexit(),
and OPENSSL_thread_stop() functions were added in OpenSSL 1.1.0. OPENSSL_thread_stop(), OPENSSL_init_new(), OPENSSL_INIT_set_config_filename()
and OPENSSL_INIT_free() functions were added in OpenSSL 1.1.0.
=head1 COPYRIGHT =head1 COPYRIGHT
......
...@@ -380,8 +380,8 @@ void OPENSSL_thread_stop(void); ...@@ -380,8 +380,8 @@ void OPENSSL_thread_stop(void);
/* Low-level control of initialization */ /* Low-level control of initialization */
OPENSSL_INIT_SETTINGS *OPENSSL_INIT_new(void); OPENSSL_INIT_SETTINGS *OPENSSL_INIT_new(void);
#ifndef OPENSSL_NO_STDIO #ifndef OPENSSL_NO_STDIO
void OPENSSL_INIT_set_config_filename(OPENSSL_INIT_SETTINGS *settings, int OPENSSL_INIT_set_config_filename(OPENSSL_INIT_SETTINGS *settings,
const char *config_file); const char *config_file);
#endif #endif
void OPENSSL_INIT_free(OPENSSL_INIT_SETTINGS *settings); void OPENSSL_INIT_free(OPENSSL_INIT_SETTINGS *settings);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册