From: Serge Hallyn Date: Mon, 15 Apr 2013 03:44:09 +0000 (-0500) Subject: coverity resource leak fixes X-Git-Tag: lxc-1.0.0.alpha1~1^2~300 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=00b6be440f93131e35e75fb1b34d8d3220590bb5;p=thirdparty%2Flxc.git coverity resource leak fixes Signed-off-by: Serge Hallyn --- diff --git a/src/lxc/apparmor.c b/src/lxc/apparmor.c index 11f32d550..a2d647672 100644 --- a/src/lxc/apparmor.c +++ b/src/lxc/apparmor.c @@ -36,6 +36,8 @@ again: f = fopen(path, "r"); if (!f) { SYSERROR("opening %s\n", path); + if (buf) + free(buf); return NULL; } sz += 1024; diff --git a/src/lxc/cgroup.c b/src/lxc/cgroup.c index 812bfb80f..368214f24 100644 --- a/src/lxc/cgroup.c +++ b/src/lxc/cgroup.c @@ -69,8 +69,10 @@ static char *mount_has_subsystem(const struct mntent *mntent) return 0; /* skip the first line, which contains column headings */ - if (!fgets(line, MAXPATHLEN, f)) + if (!fgets(line, MAXPATHLEN, f)) { + fclose(f); return 0; + } while (fgets(line, MAXPATHLEN, f)) { c = strchr(line, '\t'); diff --git a/src/lxc/conf.c b/src/lxc/conf.c index 33061df22..b6bdd936b 100644 --- a/src/lxc/conf.c +++ b/src/lxc/conf.c @@ -309,6 +309,7 @@ static int run_buffer(char *buffer) output = malloc(LXC_LOG_BUFFER_SIZE); if (!output) { ERROR("failed to allocate memory for script output"); + pclose(f); return -1; } @@ -535,6 +536,7 @@ static int mount_rootfs_file(const char *rootfs, const char *target) if (errno != ENXIO) { WARN("unexpected error for ioctl on '%s': %m", direntp->d_name); + close(fd); continue; } @@ -792,6 +794,7 @@ static int setup_rootfs_pivot_root_cb(char *buffer, void *data) listentry->elem = strdup(mountpoint); if (!listentry->elem) { SYSERROR("strdup failed"); + free(listentry); return -1; } lxc_list_add_tail(mountlist, listentry); @@ -1053,8 +1056,10 @@ int detect_shared_rootfs(void) if (strcmp(p+1, "/") == 0) { // this is '/'. is it shared? p = index(p2+1, ' '); - if (strstr(p, "shared:")) + if (strstr(p, "shared:")) { + fclose(f); return 1; + } } } fclose(f); diff --git a/src/lxc/confile.c b/src/lxc/confile.c index ba017074a..d0a404f4a 100644 --- a/src/lxc/confile.c +++ b/src/lxc/confile.c @@ -1249,8 +1249,10 @@ static int config_mount(const char *key, const char *value, return -1; mntelem = strdup(value); - if (!mntelem) + if (!mntelem) { + free(mntlist); return -1; + } mntlist->elem = mntelem; lxc_list_add_tail(&lxc_conf->mount_list, mntlist);