提交 a34ec87d 编写于 作者: M Martin Kletzander 提交者: Eric Blake

util: fix potential leak in error codepath

Signed-off-by: NMartin Kletzander <mkletzan@redhat.com>
(cherry picked from commit aaaa2d56)

Conflicts:
	src/util/virpidfile.c - undo temporary bisection fix in previous patch
上级 5ddbe251
......@@ -529,6 +529,9 @@ virPidFileConstructPath(bool privileged,
const char *progname,
char **pidfile)
{
int ret = -1;
char *rundir = NULL;
if (privileged) {
/*
* This is here just to allow calling this function with
......@@ -537,34 +540,32 @@ virPidFileConstructPath(bool privileged,
if (!statedir) {
virReportError(VIR_ERR_INTERNAL_ERROR,
"%s", _("No statedir specified"));
goto error;
goto cleanup;
}
if (virAsprintf(pidfile, "%s/run/%s.pid", statedir, progname) < 0)
goto error;
goto cleanup;
} else {
char *rundir = NULL;
mode_t old_umask;
if (!(rundir = virGetUserRuntimeDirectory()))
goto error;
goto cleanup;
old_umask = umask(077);
if (virFileMakePath(rundir) < 0) {
umask(old_umask);
goto error;
goto cleanup;
}
umask(old_umask);
if (virAsprintf(pidfile, "%s/%s.pid", rundir, progname) < 0) {
VIR_FREE(rundir);
goto error;
goto cleanup;
}
VIR_FREE(rundir);
}
return 0;
error:
return -1;
ret = 0;
cleanup:
VIR_FREE(rundir);
return ret;
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册