goto cleanup;
}
VIR_INFO("Bypass polkit auth for privileged client %s", ident);
- if (virNetServerClientSetIdentity(client, ident) < 0)
- virResetLastError();
- else
- auth = VIR_NET_SERVER_SERVICE_AUTH_NONE;
+ virNetServerClientSetAuth(client, 0);
+ auth = VIR_NET_SERVER_SERVICE_AUTH_NONE;
VIR_FREE(ident);
}
}
if (!virNetSASLContextCheckIdentity(saslCtxt, identity))
return -2;
- if (virNetServerClientSetIdentity(client, identity) < 0)
- goto error;
-
+ virNetServerClientSetAuth(client, 0);
virNetServerClientSetSASLSession(client, priv->sasl);
VIR_DEBUG("Authentication successful %d", virNetServerClientGetFD(client));
action, (long long) callerPid, callerUid);
ret->complete = 1;
- virNetServerClientSetIdentity(client, ident);
+ virNetServerClientSetAuth(client, 0);
virMutexUnlock(&priv->lock);
virCommandFree(cmd);
VIR_FREE(pkout);
action, (long long) callerPid, callerUid,
polkit_result_to_string_representation(pkresult));
ret->complete = 1;
- virNetServerClientSetIdentity(client, ident);
+ virNetServerClientSetAuth(client, 0);
virMutexUnlock(&priv->lock);
VIR_FREE(ident);
return 0;
virNetServerClientDelayedClose;
virNetServerClientGetAuth;
virNetServerClientGetFD;
-virNetServerClientGetIdentity;
virNetServerClientGetPrivateData;
virNetServerClientGetReadonly;
virNetServerClientGetTLSKeySize;
virNetServerClientRemoteAddrString;
virNetServerClientRemoveFilter;
virNetServerClientSendMessage;
+virNetServerClientSetAuth;
virNetServerClientSetCloseHook;
virNetServerClientSetDispatcher;
-virNetServerClientSetIdentity;
virNetServerClientStartKeepAlive;
virNetServerClientWantClose;
virNetSocketPtr sock;
int auth;
bool readonly;
- char *identity;
#if WITH_GNUTLS
virNetTLSContextPtr tlsCtxt;
virNetTLSSessionPtr tls;
virJSONValuePtr child;
virNetServerClientPtr client = NULL;
virNetSocketPtr sock;
- const char *identity = NULL;
int auth;
bool readonly;
unsigned int nrequests_max;
_("Missing nrequests_client_max field in JSON state document"));
return NULL;
}
- if (virJSONValueObjectHasKey(object, "identity") &&
- (!(identity = virJSONValueObjectGetString(object, "identity")))) {
- virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("Missing identity field in JSON state document"));
- return NULL;
- }
if (!(child = virJSONValueObjectGet(object, "sock"))) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
}
virObjectUnref(sock);
- if (identity &&
- virNetServerClientSetIdentity(client, identity) < 0)
- goto error;
-
if (privNew) {
if (!(child = virJSONValueObjectGet(object, "privateData"))) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
if (virJSONValueObjectAppendNumberUint(object, "nrequests_max", client->nrequests_max) < 0)
goto error;
- if (client->identity &&
- virJSONValueObjectAppendString(object, "identity", client->identity) < 0)
- goto error;
-
if (!(child = virNetSocketPreExecRestart(client->sock)))
goto error;
return auth;
}
+void virNetServerClientSetAuth(virNetServerClientPtr client, int auth)
+{
+ virObjectLock(client);
+ client->auth = auth;
+ virObjectUnlock(client);
+}
+
bool virNetServerClientGetReadonly(virNetServerClientPtr client)
{
bool readonly;
#endif
-int virNetServerClientSetIdentity(virNetServerClientPtr client,
- const char *identity)
-{
- int ret = -1;
- virObjectLock(client);
- if (!(client->identity = strdup(identity))) {
- virReportOOMError();
- goto error;
- }
- ret = 0;
-
-error:
- virObjectUnlock(client);
- return ret;
-}
-
-const char *virNetServerClientGetIdentity(virNetServerClientPtr client)
-{
- const char *identity;
- virObjectLock(client);
- identity = client->identity;
- virObjectUnlock(client);
- return identity;
-}
-
-
void *virNetServerClientGetPrivateData(virNetServerClientPtr client)
{
void *data;
client->privateDataFreeFunc)
client->privateDataFreeFunc(client->privateData);
- VIR_FREE(client->identity);
#if WITH_SASL
virObjectUnref(client->sasl);
#endif
{
bool need = false;
virObjectLock(client);
- if (client->auth && !client->identity)
+ if (client->auth)
need = true;
virObjectUnlock(client);
return need;
int filterID);
int virNetServerClientGetAuth(virNetServerClientPtr client);
+void virNetServerClientSetAuth(virNetServerClientPtr client, int auth);
bool virNetServerClientGetReadonly(virNetServerClientPtr client);
# ifdef WITH_GNUTLS
bool virNetServerClientIsSecure(virNetServerClientPtr client);
-int virNetServerClientSetIdentity(virNetServerClientPtr client,
- const char *identity);
-const char *virNetServerClientGetIdentity(virNetServerClientPtr client);
-
int virNetServerClientGetUNIXIdentity(virNetServerClientPtr client,
uid_t *uid, gid_t *gid, pid_t *pid);