From e1827012ed4119150e29c3afcf462d3353f3a405 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Fri, 28 Mar 2014 12:50:11 -0400 Subject: [PATCH] Adjust getpwuid() fix commit to display errno string on failure This adjusts patch 613c6d26bd42dd8c2dd0664315be9551475b8864. --- src/backend/libpq/auth.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/backend/libpq/auth.c b/src/backend/libpq/auth.c index a2f1c96b8b..31ade0bdbe 100644 --- a/src/backend/libpq/auth.c +++ b/src/backend/libpq/auth.c @@ -1559,9 +1559,8 @@ auth_peer(hbaPort *port) char ident_user[IDENT_USERNAME_MAX + 1]; uid_t uid; gid_t gid; - struct passwd *pass; + struct passwd *pw; - errno = 0; if (getpeereid(port->sock, &uid, &gid) != 0) { /* Provide special error message if getpeereid is a stub */ @@ -1576,17 +1575,17 @@ auth_peer(hbaPort *port) return STATUS_ERROR; } - pass = getpwuid(uid); - - if (pass == NULL) + errno = 0; /* clear errno before call */ + pw = getpwuid(uid); + if (!pw) { ereport(LOG, - (errmsg("local user with ID %d does not exist", - (int) uid))); + (errmsg("failed to look up local user id %ld: %s", + (long) uid, errno ? strerror(errno) : _("user does not exist")))); return STATUS_ERROR; } - strlcpy(ident_user, pass->pw_name, IDENT_USERNAME_MAX + 1); + strlcpy(ident_user, pw->pw_name, IDENT_USERNAME_MAX + 1); return check_usermap(port->hba->usermap, port->user_name, ident_user, false); } -- 2.40.0