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