]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
Coverity 989710 and 989711: small recourse leaks in filemd5 parsing code.
authorVictor Julien <victor@inliniac.net>
Wed, 13 Mar 2013 09:16:15 +0000 (10:16 +0100)
committerVictor Julien <victor@inliniac.net>
Wed, 13 Mar 2013 09:16:15 +0000 (10:16 +0100)
src/detect-filemd5.c

index 194b8d85dcf181bcb2b432269bd6e6152a545018..b08846e77d18f3709ea1dfb22903682390eb18e2 100644 (file)
@@ -208,6 +208,8 @@ static int DetectFileMd5Match (ThreadVars *t, DetectEngineThreadCtx *det_ctx,
 static DetectFileMd5Data *DetectFileMd5Parse (char *str)
 {
     DetectFileMd5Data *filemd5 = NULL;
+    FILE *fp = NULL;
+    char *filename = NULL;
 
     /* We have a correct filemd5 option */
     filemd5 = SCMalloc(sizeof(DetectFileMd5Data));
@@ -227,16 +229,16 @@ static DetectFileMd5Data *DetectFileMd5Parse (char *str)
     }
 
     /* get full filename */
-    char *filename = DetectLoadCompleteSigPath(str);
+    filename = DetectLoadCompleteSigPath(str);
     if (filename == NULL) {
         goto error;
     }
 
     char line[8192] = "";
-    FILE *fp = fopen(filename, "r");
+    fp = fopen(filename, "r");
     if (fp == NULL) {
         SCLogError(SC_ERR_OPENING_RULE_FILE, "opening md5 file %s: %s", filename, strerror(errno));
-        return NULL;
+        goto error;
     }
 
     int line_no = 0;
@@ -272,11 +274,16 @@ static DetectFileMd5Data *DetectFileMd5Parse (char *str)
     }
     SCLogInfo("MD5 hash size %u bytes%s", ROHashMemorySize(filemd5->hash), filemd5->negated ? ", negated match" : "");
 
+    SCFree(filename);
     return filemd5;
 
 error:
     if (filemd5 != NULL)
         DetectFileMd5Free(filemd5);
+    if (fp != NULL)
+        fclose(fp);
+    if (filename != NULL)
+        SCFree(filename);
     return NULL;
 }