mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-11 07:17:44 +00:00
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: Pavel Hrdina <phrdina@redhat.com>
This commit is contained in:
parent
18fc3199c2
commit
c4b4b13ccb
@ -87,24 +87,22 @@ virAccessDriverPolkitGetCaller(const char *actionid,
|
|||||||
actionid);
|
actionid);
|
||||||
return -1;
|
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",
|
virAccessError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||||
_("No UNIX process ID available"));
|
_("No UNIX process ID available"));
|
||||||
goto cleanup;
|
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;
|
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;
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user