Adjust getpwuid() fix commit to display errno string on failure
authorBruce Momjian <bruce@momjian.us>
Fri, 28 Mar 2014 16:50:11 +0000 (12:50 -0400)
committerBruce Momjian <bruce@momjian.us>
Fri, 28 Mar 2014 16:50:15 +0000 (12:50 -0400)
This adjusts patch 613c6d26bd42dd8c2dd0664315be9551475b8864.

src/backend/libpq/auth.c

index a2f1c96b8bc69ee1b7c34448f8fa007db54b0b8f..31ade0bdbe4353cd88c8f2f5263804d2ab3a0b96 100644 (file)
@@ -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);
 }