提交 c4b4b13c 编写于 作者: P Pavel Hrdina

polkit_driver: fix possible segfault

The changes in commit c7542573 introduced possible segfault. Looking
deeper into the code and the original code before the patch series were
applied I think that we should report error for each function failure
and also we shouldn't call some of the function twice.

Found by coverity.
Signed-off-by: NPavel Hrdina <phrdina@redhat.com>
上级 18fc3199
......@@ -87,24 +87,22 @@ virAccessDriverPolkitGetCaller(const char *actionid,
actionid);
return -1;
}
if (virIdentityGetUNIXProcessID(identity, pid) < 0)
goto cleanup;
if (virIdentityGetUNIXProcessTime(identity, startTime) < 0)
goto cleanup;
if (virIdentityGetUNIXUserID(identity, uid) < 0)
goto cleanup;
if (!pid) {
if (virIdentityGetUNIXProcessID(identity, pid) < 0) {
virAccessError(VIR_ERR_INTERNAL_ERROR, "%s",
_("No UNIX process ID available"));
goto cleanup;
}
if (virIdentityGetUNIXProcessTime(identity, startTime) < 0)
if (virIdentityGetUNIXProcessTime(identity, startTime) < 0) {
virAccessError(VIR_ERR_INTERNAL_ERROR, "%s",
_("No UNIX process start time available"));
goto cleanup;
if (virIdentityGetUNIXUserID(identity, uid) < 0)
}
if (virIdentityGetUNIXUserID(identity, uid) < 0) {
virAccessError(VIR_ERR_INTERNAL_ERROR, "%s",
_("No UNIX caller UID available"));
goto cleanup;
}
ret = 0;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册