45 lines
2.0 KiB
Diff
45 lines
2.0 KiB
Diff
diff -rup libvirt-0.4.0.orig/src/remote_internal.c libvirt-0.4.0.new/src/remote_internal.c
|
|
--- libvirt-0.4.0.orig/src/remote_internal.c 2007-12-17 16:51:09.000000000 -0500
|
|
+++ libvirt-0.4.0.new/src/remote_internal.c 2008-01-02 16:28:44.000000000 -0500
|
|
@@ -3347,24 +3347,26 @@ remoteAuthPolkit (virConnectPtr conn, st
|
|
};
|
|
remoteDebug(priv, "Client initialize PolicyKit authentication");
|
|
|
|
- for (i = 0 ; i < auth->ncredtype ; i++) {
|
|
- if (auth->credtype[i] == VIR_CRED_EXTERNAL)
|
|
- allowcb = 1;
|
|
- }
|
|
+ if (auth && auth->cb) {
|
|
+ /* Check if the neccessary credential type for PolicyKit is supported */
|
|
+ for (i = 0 ; i < auth->ncredtype ; i++) {
|
|
+ if (auth->credtype[i] == VIR_CRED_EXTERNAL)
|
|
+ allowcb = 1;
|
|
+ }
|
|
|
|
- /* Run the authentication callback */
|
|
- if (allowcb) {
|
|
- if (auth && auth->cb &&
|
|
- (*(auth->cb))(&cred, 1, auth->cbdata) < 0) {
|
|
- __virRaiseError (in_open ? NULL : conn, NULL, NULL, VIR_FROM_REMOTE,
|
|
- VIR_ERR_AUTH_FAILED, VIR_ERR_ERROR, NULL, NULL, NULL, 0, 0,
|
|
- "Failed to collect auth credentials");
|
|
- return -1;
|
|
+ if (allowcb) {
|
|
+ /* Run the authentication callback */
|
|
+ if ((*(auth->cb))(&cred, 1, auth->cbdata) < 0) {
|
|
+ __virRaiseError (in_open ? NULL : conn, NULL, NULL, VIR_FROM_REMOTE,
|
|
+ VIR_ERR_AUTH_FAILED, VIR_ERR_ERROR, NULL, NULL, NULL, 0, 0,
|
|
+ "Failed to collect auth credentials");
|
|
+ return -1;
|
|
+ }
|
|
} else {
|
|
- remoteDebug(priv, "No auth callback provided for PolicyKit");
|
|
+ remoteDebug(priv, "Client auth callback does not support PolicyKit");
|
|
}
|
|
} else {
|
|
- remoteDebug(priv, "Client auth callback does not support PolicyKit");
|
|
+ remoteDebug(priv, "No auth callback provided");
|
|
}
|
|
|
|
memset (&ret, 0, sizeof ret);
|