summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crypto/err/err.c9
-rw-r--r--crypto/include/internal/err_int.h1
-rw-r--r--crypto/init.c4
-rw-r--r--doc/crypto/ERR_remove_state.pod34
-rw-r--r--doc/crypto/err.pod9
-rw-r--r--include/openssl/err.h5
6 files changed, 32 insertions, 30 deletions
diff --git a/crypto/err/err.c b/crypto/err/err.c
index b0fd19e7ae..fd2ea8194a 100644
--- a/crypto/err/err.c
+++ b/crypto/err/err.c
@@ -740,7 +740,7 @@ const char *ERR_reason_error_string(unsigned long e)
return ((p == NULL) ? NULL : p->string);
}
-void ERR_remove_thread_state(void)
+void err_delete_thread_state(void)
{
ERR_STATE *state = ERR_get_state();
if (state == NULL)
@@ -751,9 +751,14 @@ void ERR_remove_thread_state(void)
}
#if OPENSSL_API_COMPAT < 0x10000000L
+void ERR_remove_thread_state(void *dummy)
+{
+}
+#endif
+
+#if OPENSSL_API_COMPAT < 0x10000000L
void ERR_remove_state(unsigned long pid)
{
- ERR_remove_thread_state();
}
#endif
diff --git a/crypto/include/internal/err_int.h b/crypto/include/internal/err_int.h
index 7f1037e939..0aebe8466e 100644
--- a/crypto/include/internal/err_int.h
+++ b/crypto/include/internal/err_int.h
@@ -13,5 +13,6 @@
void err_load_crypto_strings_int(void);
void err_cleanup(void);
+void err_delete_thread_state(void);
#endif
diff --git a/crypto/init.c b/crypto/init.c
index 48f74c496c..938bf78a39 100644
--- a/crypto/init.c
+++ b/crypto/init.c
@@ -351,9 +351,9 @@ static void ossl_init_thread_stop(struct thread_local_inits_st *locals)
if (locals->err_state) {
#ifdef OPENSSL_INIT_DEBUG
fprintf(stderr, "OPENSSL_INIT: ossl_init_thread_stop: "
- "ERR_remove_thread_state()\n");
+ "err_delete_thread_state()\n");
#endif
- ERR_remove_thread_state();
+ err_delete_thread_state();
}
OPENSSL_free(locals);
diff --git a/doc/crypto/ERR_remove_state.pod b/doc/crypto/ERR_remove_state.pod
index b011182c47..944365d89c 100644
--- a/doc/crypto/ERR_remove_state.pod
+++ b/doc/crypto/ERR_remove_state.pod
@@ -2,44 +2,42 @@
=head1 NAME
-ERR_remove_thread_state, ERR_remove_state - free a thread's error queue
+ERR_remove_thread_state, ERR_remove_state - DEPRECATED
=head1 SYNOPSIS
- #include <openssl/err.h>
-
- void ERR_remove_thread_state(void);
-
Deprecated:
#if OPENSSL_API_COMPAT < 0x10000000L
void ERR_remove_state(unsigned long pid);
#endif
-=head1 DESCRIPTION
+ #if OPENSSL_API_COMPAT < 0x10100000L
+ void ERR_remove_thread_state(void *);
+ #endif
-ERR_remove_thread_state() frees the error queue associated with the current
-thread.
+=head1 DESCRIPTION
-Since error queue data structures are allocated automatically for new
-threads, they must be freed when threads are terminated in order to
-avoid memory leaks.
+The functions described here were used to free the error queue
+associated with the current or specificed thread.
-ERR_remove_state is deprecated and has been replaced by
-ERR_remove_thread_state. Any argument to this function is ignored and
-calling ERR_remove_state is equivalent to B<ERR_remove_thread_state()>.
+They are now deprecated and do nothing, please use
+OPENSSL_thread_stop() instead.
=head1 RETURN VALUE
-ERR_remove_thread_state and ERR_remove_state() return no value.
+The functions described here return no value.
=head1 SEE ALSO
-L<err(3)>
+L<err(3)>, L<OPENSSL_thread_stop(3)>
=head1 HISTORY
-ERR_remove_state()
-was deprecated in OpenSSL 1.0.0 when ERR_remove_thread_state() was introduced.
+ERR_remove_state() was deprecated in OpenSSL 1.0.0 when
+ERR_remove_thread_state() was introduced.
+
+ERR_remove_thread_state() was deprecated in OpenSSL 1.1.0 when the
+thread handling functionality was entirely rewritten.
=cut
diff --git a/doc/crypto/err.pod b/doc/crypto/err.pod
index 33cb19d0cf..a590cd756a 100644
--- a/doc/crypto/err.pod
+++ b/doc/crypto/err.pod
@@ -22,7 +22,6 @@ err - error codes
int ERR_GET_REASON(unsigned long e);
void ERR_clear_error(void);
- void ERR_remove_thread_state(void);
char *ERR_error_string(unsigned long e, char *buf);
const char *ERR_lib_error_string(unsigned long e);
@@ -49,6 +48,10 @@ Deprecated:
#endif
#if OPENSSL_API_COMPAT < 0x10100000L
+ void ERR_remove_thread_state(void *);
+ #endif
+
+ #if OPENSSL_API_COMPAT < 0x10100000L
void ERR_free_strings(void)
#endif
@@ -71,9 +74,6 @@ messages is described in L<ERR_error_string(3)>.
L<ERR_clear_error(3)> can be used to clear the
error queue.
-Note that L<ERR_remove_thread_state(3)> should be used to
-avoid memory leaks when threads are terminated.
-
=head1 ADDING NEW ERROR CODES TO OPENSSL
See L<ERR_put_error(3)> if you want to record error codes in the
@@ -186,7 +186,6 @@ L<ERR_clear_error(3)>,
L<ERR_error_string(3)>,
L<ERR_print_errors(3)>,
L<ERR_load_crypto_strings(3)>,
-L<ERR_remove_thread_state(3)>,
L<ERR_put_error(3)>,
L<ERR_load_strings(3)>,
L<SSL_get_error(3)>
diff --git a/include/openssl/err.h b/include/openssl/err.h
index ccf2ff72de..e41fdc3efe 100644
--- a/include/openssl/err.h
+++ b/include/openssl/err.h
@@ -359,9 +359,8 @@ void ERR_load_ERR_strings(void);
# define ERR_free_strings() while(0) continue
#endif
-void ERR_remove_thread_state(void);
-DEPRECATEDIN_1_0_0(void ERR_remove_state(unsigned long pid)) /* if zero we
- * look it up */
+DEPRECATEDIN_1_1_0(void ERR_remove_thread_state(void *))
+DEPRECATEDIN_1_0_0(void ERR_remove_state(unsigned long pid))
ERR_STATE *ERR_get_state(void);
LHASH_OF(ERR_STRING_DATA) *ERR_get_string_table(void);