]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Fix memory leaks in cachemgr.cgi URL parser
authorAmos Jeffries <squid3@treenet.co.nz>
Sun, 15 Feb 2015 08:24:23 +0000 (00:24 -0800)
committerAmos Jeffries <squid3@treenet.co.nz>
Sun, 15 Feb 2015 08:24:23 +0000 (00:24 -0800)
  Detected by Coverity Scan. Issue 1256164

tools/cachemgr.cc

index 2c3e25cf60894db3e1b317a0a71cb4b5ba03274b..87fb18bafe0104eee956f57a7dfc07e9f60c22ff 100644 (file)
@@ -980,7 +980,7 @@ read_request(void)
 
     cachemgr_request *req;
     char *s;
-    char *t;
+    char *t = NULL;
     char *q;
 
     if ((buf = read_post_request()) != NULL)
@@ -1005,6 +1005,7 @@ read_request(void)
     req = (cachemgr_request *)xcalloc(1, sizeof(cachemgr_request));
 
     for (s = strtok(buf, "&"); s != NULL; s = strtok(NULL, "&")) {
+        safe_free(t);
         t = xstrdup(s);
 
         if ((q = strchr(t, '=')) == NULL)
@@ -1035,8 +1036,8 @@ read_request(void)
             req->workers = xstrdup(q);
         else if (0 == strcmp(t, "processes") && strlen(q))
             req->processes = xstrdup(q);
-        safe_free(t);
     }
+    safe_free(t);
 
     if (req->server && !req->hostname) {
         char *p;