diff options
author | Daniel P. Berrange <berrange@redhat.com> | 2011-12-16 00:18:22 +0000 |
---|---|---|
committer | Daniel P. Berrange <berrange@redhat.com> | 2012-01-19 13:30:03 +0000 |
commit | 59cf0398155558dcebede7f27fc82b571d142872 (patch) | |
tree | 6de1baffedda277ccaaa3fc8dc245a7fe4331fb1 /src/rpc | |
parent | Added capability checking for block <iotune> setting. (diff) | |
download | libvirt-59cf0398155558dcebede7f27fc82b571d142872.tar.gz libvirt-59cf0398155558dcebede7f27fc82b571d142872.tar.bz2 libvirt-59cf0398155558dcebede7f27fc82b571d142872.zip |
Also retrieve GID from SO_PEERCRED
* daemon/remote.c, src/rpc/virnetserverclient.c,
src/rpc/virnetserverclient.h, src/rpc/virnetsocket.c,
src/rpc/virnetsocket.h: Add gid parameter
Diffstat (limited to 'src/rpc')
-rw-r--r-- | src/rpc/virnetserverclient.c | 4 | ||||
-rw-r--r-- | src/rpc/virnetserverclient.h | 2 | ||||
-rw-r--r-- | src/rpc/virnetsocket.c | 3 | ||||
-rw-r--r-- | src/rpc/virnetsocket.h | 1 |
4 files changed, 7 insertions, 3 deletions
diff --git a/src/rpc/virnetserverclient.c b/src/rpc/virnetserverclient.c index cb07dd91e..ed08e408b 100644 --- a/src/rpc/virnetserverclient.c +++ b/src/rpc/virnetserverclient.c @@ -448,12 +448,12 @@ int virNetServerClientGetFD(virNetServerClientPtr client) } int virNetServerClientGetLocalIdentity(virNetServerClientPtr client, - uid_t *uid, pid_t *pid) + uid_t *uid, gid_t *gid, pid_t *pid) { int ret = -1; virNetServerClientLock(client); if (client->sock) - ret = virNetSocketGetLocalIdentity(client->sock, uid, pid); + ret = virNetSocketGetLocalIdentity(client->sock, uid, gid, pid); virNetServerClientUnlock(client); return ret; } diff --git a/src/rpc/virnetserverclient.h b/src/rpc/virnetserverclient.h index a201dca2f..2dd01c5fb 100644 --- a/src/rpc/virnetserverclient.h +++ b/src/rpc/virnetserverclient.h @@ -71,7 +71,7 @@ int virNetServerClientSetIdentity(virNetServerClientPtr client, const char *virNetServerClientGetIdentity(virNetServerClientPtr client); int virNetServerClientGetLocalIdentity(virNetServerClientPtr client, - uid_t *uid, pid_t *pid); + uid_t *uid, gid_t *gid, pid_t *pid); void virNetServerClientRef(virNetServerClientPtr client); diff --git a/src/rpc/virnetsocket.c b/src/rpc/virnetsocket.c index af4fc5e9a..8178ac3c8 100644 --- a/src/rpc/virnetsocket.c +++ b/src/rpc/virnetsocket.c @@ -826,6 +826,7 @@ int virNetSocketGetPort(virNetSocketPtr sock) #ifdef SO_PEERCRED int virNetSocketGetLocalIdentity(virNetSocketPtr sock, uid_t *uid, + gid_t *gid, pid_t *pid) { struct ucred cr; @@ -841,6 +842,7 @@ int virNetSocketGetLocalIdentity(virNetSocketPtr sock, *pid = cr.pid; *uid = cr.uid; + *gid = cr.gid; virMutexUnlock(&sock->lock); return 0; @@ -848,6 +850,7 @@ int virNetSocketGetLocalIdentity(virNetSocketPtr sock, #else int virNetSocketGetLocalIdentity(virNetSocketPtr sock ATTRIBUTE_UNUSED, uid_t *uid ATTRIBUTE_UNUSED, + gid_t *gid ATTRIBUTE_UNUSED, pid_t *pid ATTRIBUTE_UNUSED) { /* XXX Many more OS support UNIX socket credentials we could port to. See dbus ....*/ diff --git a/src/rpc/virnetsocket.h b/src/rpc/virnetsocket.h index ef9baa830..c2a040f56 100644 --- a/src/rpc/virnetsocket.h +++ b/src/rpc/virnetsocket.h @@ -88,6 +88,7 @@ int virNetSocketGetPort(virNetSocketPtr sock); int virNetSocketGetLocalIdentity(virNetSocketPtr sock, uid_t *uid, + gid_t *gid, pid_t *pid); int virNetSocketSetBlocking(virNetSocketPtr sock, |