From: Cole Robinson Date: Fri, 27 Jan 2012 22:01:21 +0000 (-0500) Subject: Return more error output if policykit auth fails. X-Git-Tag: v0.9.10-rc1~84 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=855d900b84df7c222e0f56799dc052993452493e;p=thirdparty%2Flibvirt.git Return more error output if policykit auth fails. Several not uncommon issues can be diagnosed through pkcheck output, like lack of/malfunctioning desktop agent, or lack of/malfunctioning polkit dbus agent. --- diff --git a/daemon/remote.c b/daemon/remote.c index 47258960a2..d2150bf545 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -2472,7 +2472,7 @@ remoteDispatchAuthPolkit(virNetServerPtr server ATTRIBUTE_UNUSED, int status = -1; char *ident = NULL; bool authdismissed = 0; - char *pkout = NULL; + char *pkout = NULL, *pkerr = NULL; struct daemonClientPrivate *priv = virNetServerClientGetPrivateData(client); virCommandPtr cmd = NULL; @@ -2484,6 +2484,7 @@ remoteDispatchAuthPolkit(virNetServerPtr server ATTRIBUTE_UNUSED, cmd = virCommandNewArgList(PKCHECK_PATH, "--action-id", action, NULL); virCommandSetOutputBuffer(cmd, &pkout); + virCommandSetErrorBuffer(cmd, &pkerr); VIR_DEBUG("Start PolicyKit auth %d", virNetServerClientGetFD(client)); if (virNetServerClientGetAuth(client) != VIR_NET_SERVER_SERVICE_AUTH_POLKIT) { @@ -2537,15 +2538,22 @@ remoteDispatchAuthPolkit(virNetServerPtr server ATTRIBUTE_UNUSED, error: virCommandFree(cmd); VIR_FREE(ident); - VIR_FREE(pkout); virResetLastError(); + if (authdismissed) { virNetError(VIR_ERR_AUTH_CANCELLED, "%s", _("authentication cancelled by user")); + } else if (pkout || pkerr) { + virNetError(VIR_ERR_AUTH_FAILED, "%s %s", + pkerr ? pkerr : "", + pkout ? pkout : ""); } else { virNetError(VIR_ERR_AUTH_FAILED, "%s", _("authentication failed")); } + + VIR_FREE(pkout); + VIR_FREE(pkerr); virNetMessageSaveError(rerr); virMutexUnlock(&priv->lock); return -1;