Do not leak cur_ns in case of malformed lease file.
Found by llvm's scan-build.

OK?

diff --git frontend.c frontend.c
index e70600ce3a1..e5d4c670bef 100644
--- frontend.c
+++ frontend.c
@@ -1018,6 +1018,7 @@ parse_dhcp_lease(int fd)
                        if (strcmp(toks[1], "domain-name-servers") == 0) {
                                if((p = strchr(toks[2], ';')) != NULL) {
                                        *p='\0';
+                                       free(cur_ns);
                                        cur_ns = strdup(toks[2]);
                                }
                        }
@@ -1041,11 +1042,16 @@ parse_dhcp_lease(int fd)
                        if (epoch + lease_time > now ) {
                                free(ns);
                                ns = cur_ns;
-                       } else /* expired lease */
+                               cur_ns = NULL;
+                       } else {
+                               /* expired lease */
                                free(cur_ns);
+                               cur_ns = NULL;
+                       }
                }
        }
        free(line);
+       free(cur_ns);
 
        if (ferror(f))
                log_warn("getline");


-- 
I'm not entirely sure you are real.

Reply via email to