]> granicus.if.org Git - curl/commitdiff
openssl: fix potential memory leak in SSLKEYLOGFILE logic
authorDaniel Stenberg <daniel@haxx.se>
Thu, 18 Jan 2018 11:10:58 +0000 (12:10 +0100)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 18 Jan 2018 11:10:58 +0000 (12:10 +0100)
Coverity CID 1427646.

lib/vtls/openssl.c

index 135e3ac5430b696bf8fbdcf81301a020b8d4a5fd..93faa6fa8da5f8c12135dffb098c93a01b21e9cb 100644 (file)
@@ -944,20 +944,23 @@ static int Curl_ossl_init(void)
 #endif
 
 #ifdef ENABLE_SSLKEYLOGFILE
-  keylog_file_name = curl_getenv("SSLKEYLOGFILE");
-  if(keylog_file_name && !keylog_file_fp) {
-    keylog_file_fp = fopen(keylog_file_name, FOPEN_APPENDTEXT);
-    if(keylog_file_fp) {
+  if(!keylog_file_fp) {
+    keylog_file_name = curl_getenv("SSLKEYLOGFILE");
+    if(keylog_file_name) {
+      keylog_file_fp = fopen(keylog_file_name, FOPEN_APPENDTEXT);
+      if(keylog_file_fp) {
 #ifdef WIN32
-      if(setvbuf(keylog_file_fp, NULL, _IONBF, 0)) {
+        if(setvbuf(keylog_file_fp, NULL, _IONBF, 0))
 #else
-      if(setvbuf(keylog_file_fp, NULL, _IOLBF, 4096)) {
+        if(setvbuf(keylog_file_fp, NULL, _IOLBF, 4096))
 #endif
-        fclose(keylog_file_fp);
-        keylog_file_fp = NULL;
+        {
+          fclose(keylog_file_fp);
+          keylog_file_fp = NULL;
+        }
       }
+      Curl_safefree(keylog_file_name);
     }
-    Curl_safefree(keylog_file_name);
   }
 #endif