]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
Fix memory leak in pid_from_lxcname and use ns_proc_name in open_ns.
authorMarek Majkowski <marek@cloudflare.com>
Tue, 12 Nov 2013 15:06:23 +0000 (07:06 -0800)
committerMarek Majkowski <marek@cloudflare.com>
Tue, 12 Nov 2013 15:06:23 +0000 (07:06 -0800)
src/lxc/lxc_start.c

index 28c84cb40b2f2aad9767c43dac16b4cdb8a7c48c..79186ade3e4799c64d97c28acf6ac6ba4447f3da 100644 (file)
@@ -107,26 +107,31 @@ static int pid_from_lxcname(const char *lxcname_or_pid, const char *lxcpath) {
 
                if (!s->may_control(s)) {
                        SYSERROR("Insufficient privileges to control container '%s'", s->name);
+                       lxc_container_put(s);
                        return -1;
                }
 
                pid = s->init_pid(s);
                if (pid < 1) {
                        SYSERROR("Is container '%s' running?", s->name);
+                       lxc_container_put(s);
                        return -1;
                }
+
+               lxc_container_put(s);
        }
        if (kill(pid, 0) < 0) {
                SYSERROR("Can't send signal to pid %d", pid);
                return -1;
        }
+
        return pid;
 }
 
 static int open_ns(int pid, const char *ns_proc_name) {
        int fd;
        char path[MAXPATHLEN];
-       snprintf(path, MAXPATHLEN, "/proc/%d/ns/net", pid);
+       snprintf(path, MAXPATHLEN, "/proc/%d/ns/%s", pid, ns_proc_name);
 
        fd = open(path, O_RDONLY);
        if (fd < 0) {