From: Marek Majkowski Date: Tue, 12 Nov 2013 15:06:23 +0000 (-0800) Subject: Fix memory leak in pid_from_lxcname and use ns_proc_name in open_ns. X-Git-Tag: lxc-1.0.0.beta1~93^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f8059880687576b84d48baae0fa4499da390638d;p=thirdparty%2Flxc.git Fix memory leak in pid_from_lxcname and use ns_proc_name in open_ns. --- diff --git a/src/lxc/lxc_start.c b/src/lxc/lxc_start.c index 28c84cb40..79186ade3 100644 --- a/src/lxc/lxc_start.c +++ b/src/lxc/lxc_start.c @@ -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) {