From: Christian Brauner Date: Fri, 12 Aug 2016 22:56:33 +0000 (+0200) Subject: tools: use correct runtime path for lxc-ls X-Git-Tag: lxc-2.1.0~359^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2263d59596829eca3c9987a2673f2ce3cd077173;p=thirdparty%2Flxc.git tools: use correct runtime path for lxc-ls So far we've simply been using RUNTIME_PATH for the privileged and unprivileged case. We should actually use XDG_RUNTIME_DIR for the unprivileged case. Signed-off-by: Christian Brauner --- diff --git a/src/lxc/tools/lxc_ls.c b/src/lxc/tools/lxc_ls.c index e2a4c34fb..0575277ca 100644 --- a/src/lxc/tools/lxc_ls.c +++ b/src/lxc/tools/lxc_ls.c @@ -986,25 +986,40 @@ out: static int ls_remove_lock(const char *path, const char *name, char **lockpath, size_t *len_lockpath, bool recalc) { + int ret = -1; + char *rundir; + + /* lockfile will be: + * "/run" + "/lxc/lock/$lxcpath/$lxcname + '\0' if root + * or + * $XDG_RUNTIME_DIR + "/lxc/lock/$lxcpath/$lxcname + '\0' if non-root + */ + rundir = get_rundir(); + if (!rundir) + goto out; + /* Avoid doing unnecessary work if we can. */ if (recalc) { - size_t newlen = strlen(path) + strlen(name) + strlen(RUNTIME_PATH) + /* / + lxc + / + lock + / + / = */ 11 + 1; + size_t newlen = strlen(path) + strlen(name) + strlen(rundir) + /* / + lxc + / + lock + / + / = */ 11 + 1; if (newlen > *len_lockpath) { char *tmp = realloc(*lockpath, newlen * 2); if (!tmp) - return -1; + goto out; *lockpath = tmp; *len_lockpath = newlen * 2; } } - int check = snprintf(*lockpath, *len_lockpath, "%s/lxc/lock/%s/%s", RUNTIME_PATH, path, name); + int check = snprintf(*lockpath, *len_lockpath, "%s/lxc/lock/%s/%s", rundir, path, name); if (check < 0 || (size_t)check >= *len_lockpath) - return -1; + goto out; lxc_rmdir_onedev(*lockpath, NULL); + ret = 0; - return 0; +out: + free(rundir); + return ret; } static int ls_send_str(int fd, const char *buf)