ubox: Fix some memory leaks
authorRosen Penev <rosenp@gmail.com>
Sun, 18 Dec 2016 01:12:28 +0000 (17:12 -0800)
committerJohn Crispin <john@phrozen.org>
Mon, 19 Dec 2016 07:53:10 +0000 (08:53 +0100)
Avoids leaking memory when exiting early.

Signed-off by: Rosen <rosenp@gmail.com>

kmodloader.c
log/logd.c
validate/validate.c

index 40edbf0260b0baa9fd7906a0cfd9ef17e6a5be5c..f80835a7f942ba80a71fb6f44b263055fbf2de8b 100644 (file)
@@ -775,11 +775,15 @@ static int main_loader(int argc, char **argv)
        strcpy(path, dir);
        strcat(path, "*");
 
-       if (scan_loaded_modules())
+       if (scan_loaded_modules()) {
+               free (path);
                return -1;
+       }
 
-       if (scan_module_folders())
+       if (scan_module_folders()) {
+               free (path);
                return -1;
+       }
 
        syslog(LOG_INFO, "kmodloader: loading kernel modules from %s\n", path);
 
index d778909e9093a7db3610cbee9d7210c08bce52b1..915348e3bce0b27086855e20022727aae5bd7b2f 100644 (file)
@@ -84,7 +84,7 @@ read_log(struct ubus_context *ctx, struct ubus_object *obj,
                struct blob_attr *msg)
 {
        struct client *cl;
-       struct blob_attr *tb[__READ_MAX];
+       struct blob_attr *tb[__READ_MAX] = { 0 };
        struct log_head *l;
        int count = 0;
        int fds[2];
index 5bc3bc4e8c31e540e6d8c487d7bfe931c9172647..0628407285023e8b4c9dfa55e1b2d6303b410db0 100644 (file)
@@ -173,8 +173,10 @@ dt_type_list(struct dt_state *s, int nargs)
        char *p, *str = strdup(s->value);
        const char *value = s->value;
 
-       if (!str || !nargs)
+       if (!str || !nargs) {
+               free(str);
                return false;
+       }
 
        for (p = strtok(str, " \t"); p; p = strtok(NULL, " \t"))
        {