Bruce Momjian <bruce@momjian.us> writes:
> Updated patch attached, with centralized checking for errno and more
> consistent behavior for username lookups.
This bit is not good:
+ errno = 0; /* clear errno before call */
+ pw = getpwuid(geteuid());
+ if (!pw)
+ {
+ *errstr = psprintf(_("effective user id %d lookup failure: %s"),
+ (int) geteuid(), errno ? strerror(errno) :
+ _("user does not exist"));
The second call of geteuid() could clobber errno before strerror can see it.
You should compute geteuid() just once and keep it in a variable.
Also, I don't think that error message meets our style guidelines.
Maybe "failed to look up user id %d: ..." ?
regards, tom lane