From 0c51e7c6abb2129e744cd932b2ccd013f2374214 Mon Sep 17 00:00:00 2001 From: Luke Howard Date: Sat, 12 May 2018 14:40:56 +1000 Subject: [PATCH] IPC: use getpeerucred() API correctly (#382) The ucred_t argument must be initialized to zero otherwise it is assumed to point to allocated memory. Also, the logic is inverted: getpeerucred() returns zero on success, not failure. --- lib/ipc/server.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/ipc/server.c b/lib/ipc/server.c index ef91f6a09..126910be8 100644 --- a/lib/ipc/server.c +++ b/lib/ipc/server.c @@ -501,9 +501,9 @@ update_client_creds(struct client *c) #ifdef HAVE_GETPEERUCRED /* Solaris 10 */ { - ucred_t *peercred; + ucred_t *peercred = NULL; - if (getpeerucred(c->fd, &peercred) != 0) { + if (getpeerucred(c->fd, &peercred) == 0) { c->unixrights.uid = ucred_geteuid(peercred); c->unixrights.gid = ucred_getegid(peercred); c->unixrights.pid = 0;