Skip to content

Commit

Permalink
tools: use correct runtime path for lxc-ls
Browse files Browse the repository at this point in the history
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 <cbrauner@suse.de>
  • Loading branch information
Christian Brauner committed Aug 12, 2016
1 parent 6fe1146 commit 2263d59
Showing 1 changed file with 20 additions and 5 deletions.
25 changes: 20 additions & 5 deletions src/lxc/tools/lxc_ls.c
Expand Up @@ -986,25 +986,40 @@ static int ls_get_wrapper(void *wrap)
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)
Expand Down

0 comments on commit 2263d59

Please sign in to comment.