From 160196798b02522ec451b64d694e6b18f22ad4b2 Mon Sep 17 00:00:00 2001 From: Takeshi Nakatani Date: Sun, 1 Jun 2014 03:54:02 +0000 Subject: [PATCH] Changed initializing logic for nss lib/openssl lib/s3fs own. --- src/nss_auth.cpp | 1 + src/openssl_auth.cpp | 6 ++++++ src/s3fs.cpp | 19 +++++++++++++++++++ 3 files changed, 26 insertions(+) diff --git a/src/nss_auth.cpp b/src/nss_auth.cpp index 7e955ea..ba96300 100644 --- a/src/nss_auth.cpp +++ b/src/nss_auth.cpp @@ -54,6 +54,7 @@ const char* s3fs_crypt_lib_name(void) //------------------------------------------------------------------- bool s3fs_init_global_ssl(void) { + NSS_Init(NULL); NSS_NoDB_Init(NULL); return true; } diff --git a/src/openssl_auth.cpp b/src/openssl_auth.cpp index eea79d6..301264f 100644 --- a/src/openssl_auth.cpp +++ b/src/openssl_auth.cpp @@ -33,6 +33,7 @@ #include #include #include +#include #include #include @@ -56,11 +57,16 @@ const char* s3fs_crypt_lib_name(void) //------------------------------------------------------------------- bool s3fs_init_global_ssl(void) { + ERR_load_crypto_strings(); + ERR_load_BIO_strings(); + OpenSSL_add_all_algorithms(); return true; } bool s3fs_destroy_global_ssl(void) { + EVP_cleanup(); + ERR_free_strings(); return true; } diff --git a/src/s3fs.cpp b/src/s3fs.cpp index 2b9d16f..690f823 100644 --- a/src/s3fs.cpp +++ b/src/s3fs.cpp @@ -2597,6 +2597,12 @@ static void* s3fs_init(struct fuse_conn_info* conn) FPRN("init"); LOWSYSLOGPRINT(LOG_ERR, "init v%s (%s)", VERSION, s3fs_crypt_lib_name()); + // ssl init + if(!s3fs_init_global_ssl()){ + fprintf(stderr, "%s: could not initialize for ssl libraries.\n", program_name.c_str()); + exit(EXIT_FAILURE); + } + // init curl if(!S3fsCurl::InitS3fsCurl("/etc/mime.types")){ fprintf(stderr, "%s: Could not initiate curl library.\n", program_name.c_str()); @@ -2637,6 +2643,8 @@ static void s3fs_destroy(void*) if(is_remove_cache && !FdManager::DeleteCacheDirectory()){ DPRN("Could not remove cache directory."); } + // ssl + s3fs_destroy_global_ssl(); } static int s3fs_access(const char* path, int mask) @@ -2840,10 +2848,17 @@ static int s3fs_utility_mode(void) return EXIT_FAILURE; } + // ssl init + if(!s3fs_init_global_ssl()){ + fprintf(stderr, "%s: could not initialize for ssl libraries.\n", program_name.c_str()); + return EXIT_FAILURE; + } + // init curl if(!S3fsCurl::InitS3fsCurl("/etc/mime.types")){ fprintf(stderr, "%s: Could not initiate curl library.\n", program_name.c_str()); LOWSYSLOGPRINT(LOG_ERR, "Could not initiate curl library."); + s3fs_destroy_global_ssl(); return EXIT_FAILURE; } @@ -2888,6 +2903,10 @@ static int s3fs_utility_mode(void) if(!S3fsCurl::DestroyS3fsCurl()){ DPRN("Could not release curl library."); } + + // ssl + s3fs_destroy_global_ssl(); + return result; }