]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
Fix realloc error handling in threshold.config file parsing. Bug #1062.
authorVictor Julien <victor@inliniac.net>
Mon, 9 Dec 2013 20:03:44 +0000 (21:03 +0100)
committerVictor Julien <victor@inliniac.net>
Mon, 9 Dec 2013 20:03:44 +0000 (21:03 +0100)
src/util-threshold-config.c

index 7a0ea7df3ab9d5f50e67be72a099946f0454ce8b..b35208d7b729036726d2a1869d783e988c39fc0e 100644 (file)
@@ -1149,14 +1149,20 @@ void SCThresholdConfParseFile(DetectEngineCtx *de_ctx, FILE *fd)
         len = SCThresholdConfLineLength(fd);
 
         if (len > 0) {
-            if (line == NULL)
-                line = SCRealloc(line, len + 1);
-            else
-                line = SCRealloc(line, strlen(line) + len + 1);
-
-            if (unlikely(line == NULL)) {
-                SCLogError(SC_ERR_MEM_ALLOC, "Error allocating memory");
-                break;
+            if (line == NULL) {
+                line = SCMalloc(len + 1);
+                if (unlikely(line == NULL)) {
+                    SCLogError(SC_ERR_MEM_ALLOC, "Error allocating memory");
+                    return;
+                }
+            } else {
+                char *newline = SCRealloc(line, strlen(line) + len + 1);
+                if (unlikely(newline == NULL)) {
+                    SCLogError(SC_ERR_MEM_ALLOC, "Error allocating memory");
+                    SCFree(line);
+                    return;
+                }
+                line = newline;
             }
 
             if (fgets(line + esc_pos, len + 1, fd) == NULL)