Просмотр исходного кода

* Free ERR strings when unloading libcrypto as it's part of that lib

Bryan Drewery 15 лет назад
Родитель
Сommit
d4e82aa30b
2 измененных файлов с 4 добавлено и 0 удалено
  1. 3 0
      src/libcrypto.c
  2. 1 0
      src/libcrypto.h

+ 3 - 0
src/libcrypto.c

@@ -49,6 +49,7 @@ static int load_symbols(void *handle) {
   DLSYM_GLOBAL(handle, BF_encrypt);
   DLSYM_GLOBAL(handle, BF_set_key);
   DLSYM_GLOBAL(handle, ERR_error_string);
+  DLSYM_GLOBAL(handle, ERR_free_strings);
   DLSYM_GLOBAL(handle, ERR_get_error);
   DLSYM_GLOBAL(handle, OPENSSL_cleanse);
   DLSYM_GLOBAL(handle, RAND_file_name);
@@ -114,6 +115,8 @@ int load_libcrypto() {
 
 int unload_libcrypto() {
   if (libcrypto_handle) {
+    ERR_free_strings();
+
     // Cleanup symbol table
     for (size_t i = 0; i < my_symbols.length(); ++i) {
       dl_symbol_table.remove(my_symbols[i]);

+ 1 - 0
src/libcrypto.h

@@ -30,6 +30,7 @@ typedef void (*BF_encrypt_t)(BF_LONG*, const BF_KEY*);
 typedef void (*BF_set_key_t)(BF_KEY*, int, const unsigned char*);
 
 typedef char* (*ERR_error_string_t)(unsigned long, char*);
+typedef void (*ERR_free_strings_t)(void);
 typedef unsigned long (*ERR_get_error_t)(void);
 
 typedef void (*OPENSSL_cleanse_t)(void*, size_t);