Use error table to determine if errors should be loaded.
authorDr. Stephen Henson <steve@openssl.org>
Tue, 21 Nov 2006 19:19:09 +0000 (19:19 +0000)
committerDr. Stephen Henson <steve@openssl.org>
Tue, 21 Nov 2006 19:19:09 +0000 (19:19 +0000)
CHANGES
util/mkerr.pl

diff --git a/CHANGES b/CHANGES
index 4b5a9d3b22c52c30176a18a4458b1464cf12c623..008f259b0de8809dc8224481610a0f0539d31274 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -4,6 +4,10 @@
 
  Changes between 0.9.7l and 0.9.7m  [xx XXX xxxx]
 
+  *) Load error codes if they are not already present instead of using a
+     static variable. This allows them to be cleanly unloaded and reloaded.
+     [Steve Henson]
+
  Changes between 0.9.7k and 0.9.7l  [28 Sep 2006]
 
   *) Introduce limits to prevent malicious keys being able to
index 9678514604b5d9568bc2cbb1f5f9f02846c50545..4171e0c98c3199bed2fec87ed1585f064926962c 100644 (file)
@@ -422,7 +422,7 @@ EOF
        print OUT <<"EOF";
 /* $cfile */
 /* ====================================================================
- * Copyright (c) 1999-2005 The OpenSSL Project.  All rights reserved.
+ * Copyright (c) 1999-2006 The OpenSSL Project.  All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -536,17 +536,14 @@ if($static) {
 
 ${staticloader}void ERR_load_${lib}_strings(void)
        {
-       static int init=1;
+#ifndef OPENSSL_NO_ERR
 
-       if (init)
+       if (ERR_func_error_string(${lib}_str_functs[0].error) == NULL)
                {
-               init=0;
-#ifndef OPENSSL_NO_ERR
                ERR_load_strings($load_errcode,${lib}_str_functs);
                ERR_load_strings($load_errcode,${lib}_str_reasons);
-#endif
-
                }
+#endif
        }
 EOF
 } else {