[openssl-commits] [openssl] master update

Richard Levitte levitte at openssl.org
Tue May 10 09:32:15 UTC 2016


The branch master has been updated
       via  21e001747d4a246827ad432fc508d67ac404ecdb (commit)
      from  06aa885d0ccbb018ff7044258e9a8b6e7a56681d (commit)


- Log -----------------------------------------------------------------
commit 21e001747d4a246827ad432fc508d67ac404ecdb
Author: Richard Levitte <levitte at openssl.org>
Date:   Sun May 8 17:01:09 2016 +0200

    Restore the ERR_remove_thread_state() API and make it a no-op
    
    The ERR_remove_thread_state() API is restored to take a pointer
    argument, but does nothing more.  ERR_remove_state() is also made into
    a no-op.  Both functions are deprecated and users are recommended to
    use OPENSSL_thread_stop() instead.
    
    Documentation is changed to reflect this.
    
    Reviewed-by: Matt Caswell <matt at openssl.org>

-----------------------------------------------------------------------

Summary of changes:
 crypto/err/err.c                  |  9 +++++++--
 crypto/include/internal/err_int.h |  1 +
 crypto/init.c                     |  4 ++--
 doc/crypto/ERR_remove_state.pod   | 34 ++++++++++++++++------------------
 doc/crypto/err.pod                |  9 ++++-----
 include/openssl/err.h             |  5 ++---
 6 files changed, 32 insertions(+), 30 deletions(-)

diff --git a/crypto/err/err.c b/crypto/err/err.c
index b0fd19e..fd2ea81 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 7f1037e..0aebe84 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 48f74c4..938bf78 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 b011182..944365d 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 33cb19d..a590cd7 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 ccf2ff7..e41fdc3 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);


More information about the openssl-commits mailing list