From 281af9370ca4060089860089233faf33682090ff Mon Sep 17 00:00:00 2001 From: alfred Date: Thu, 22 Mar 2001 04:31:30 +0000 Subject: Hopefully fix some of the bugs in passing credentials over UNIX domain sockets. Make struct cmessage visible from socket.h (about 4 places were defining it for themselves which wasn't good) Make __rpc_get_local_uid() useable and give it prototype that's visible. Fix some issues with printing out usernames from rpcbind and keyserv. --- usr.sbin/rpcbind/pmap_svc.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'usr.sbin/rpcbind/pmap_svc.c') diff --git a/usr.sbin/rpcbind/pmap_svc.c b/usr.sbin/rpcbind/pmap_svc.c index b2cedd9..26467d1 100644 --- a/usr.sbin/rpcbind/pmap_svc.c +++ b/usr.sbin/rpcbind/pmap_svc.c @@ -173,7 +173,7 @@ pmapproc_change(struct svc_req *rqstp, SVCXPRT *xprt, unsigned long op) RPCB rpcbreg; long ans; struct sockaddr_in *who; - struct cmsgcred *cmcred; + uid_t uid; char uidbuf[32]; #ifdef RPCBIND_DEBUG @@ -194,19 +194,18 @@ pmapproc_change(struct svc_req *rqstp, SVCXPRT *xprt, unsigned long op) } who = svc_getcaller(xprt); - cmcred = __svc_getcallercreds(xprt); /* * Can't use getpwnam here. We might end up calling ourselves * and looping. */ - if (cmcred == NULL) + if (__rpc_get_local_uid(xprt, &uid) < 0) rpcbreg.r_owner = "unknown"; - else if (cmcred->cmcred_uid == 0) + else if (uid == 0) rpcbreg.r_owner = "superuser"; else { /* r_owner will be strdup-ed later */ - snprintf(uidbuf, sizeof uidbuf, "%d", cmcred->cmcred_uid); + snprintf(uidbuf, sizeof uidbuf, "%d", uid); rpcbreg.r_owner = uidbuf; } -- cgit v1.1