}
ret = mkdir_p(dest, 0755);
if (ret < 0) {
- free(dest);
- return NULL;
- }
+ /* fall back to "/tmp/" $(id -u) "/lxc/" $lxcpath / $lxcname + '\0' */
+ int l2 = 33 + strlen(n) + strlen(p);
+ char *d;
+ if (l2 > len) {
+ d = realloc(dest, l2);
+ if (!d) {
+ free(dest);
+ return NULL;
+ }
+ len = l2;
+ }
+ dest = d;
+ ret = snprintf(dest, len, "/tmp/%d/lxc/%s", geteuid(), p);
+ if (ret < 0 || ret >= len) {
+ free(dest);
+ return NULL;
+ }
+ ret = snprintf(dest, len, "/tmp/%d/lxc/%s/%s", geteuid(), p, n);
+ } else
+ ret = snprintf(dest, len, "%s/lock/lxc/%s/%s", rundir, p, n);
- ret = snprintf(dest, len, "%s/lock/lxc/%s/%s", rundir, p, n);
if (ret < 0 || ret >= len) {
free(dest);
return NULL;