From: Christian Brauner Date: Wed, 9 Dec 2020 10:39:29 +0000 (+0100) Subject: utils: cleanup get_rundir() X-Git-Tag: lxc-5.0.0~330^2~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8b961418b75e9c8f91f2378c66a120ffcfcb361b;p=thirdparty%2Flxc.git utils: cleanup get_rundir() Fixes: Coverity 1461740 Signed-off-by: Christian Brauner --- diff --git a/src/lxc/utils.c b/src/lxc/utils.c index 06c471634..8c96a8605 100644 --- a/src/lxc/utils.c +++ b/src/lxc/utils.c @@ -240,7 +240,9 @@ int mkdir_p(const char *dir, mode_t mode) char *get_rundir() { - char *rundir; + __do_free char *rundir = NULL; + char *static_rundir; + int ret; size_t len; const char *homedir; struct stat sb; @@ -251,9 +253,9 @@ char *get_rundir() if (geteuid() == sb.st_uid || getegid() == sb.st_gid) return strdup(RUNTIME_PATH); - rundir = getenv("XDG_RUNTIME_DIR"); - if (rundir) - return strdup(rundir); + static_rundir = getenv("XDG_RUNTIME_DIR"); + if (static_rundir) + return strdup(static_rundir); INFO("XDG_RUNTIME_DIR isn't set in the environment"); homedir = getenv("HOME"); @@ -265,8 +267,11 @@ char *get_rundir() if (!rundir) return NULL; - snprintf(rundir, len, "%s/.cache/lxc/run/", homedir); - return rundir; + ret = snprintf(rundir, len, "%s/.cache/lxc/run/", homedir); + if (ret < 0 || (size_t)ret >= len) + return ret_set_errno(NULL, EIO); + + return move_ptr(rundir); } int wait_for_pid(pid_t pid)