diff options
Diffstat (limited to 'src/backend/libpq/auth.c')
-rw-r--r-- | src/backend/libpq/auth.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/src/backend/libpq/auth.c b/src/backend/libpq/auth.c index 2dbf7e53a12..6d11e576a4b 100644 --- a/src/backend/libpq/auth.c +++ b/src/backend/libpq/auth.c @@ -1771,7 +1771,8 @@ auth_peer(hbaPort *port) char ident_user[IDENT_USERNAME_MAX + 1]; uid_t uid; gid_t gid; - struct passwd *pass; + const char *user_name; + char *errstr; errno = 0; if (getpeereid(port->sock, &uid, &gid) != 0) @@ -1788,17 +1789,15 @@ auth_peer(hbaPort *port) return STATUS_ERROR; } - pass = getpwuid(uid); - - if (pass == NULL) + user_name = get_user_name(&errstr); + if (!user_name) { - ereport(LOG, - (errmsg("local user with ID %d does not exist", - (int) uid))); + ereport(LOG, (errmsg_internal("%s", errstr))); + pfree(errstr); return STATUS_ERROR; } - strlcpy(ident_user, pass->pw_name, IDENT_USERNAME_MAX + 1); + strlcpy(ident_user, user_name, IDENT_USERNAME_MAX + 1); return check_usermap(port->hba->usermap, port->user_name, ident_user, false); } |