Re: BUG #8139: initdb: Misleading error message when current user not in /etc/passwd
| От | Tom Lane |
|---|---|
| Тема | Re: BUG #8139: initdb: Misleading error message when current user not in /etc/passwd |
| Дата | |
| Msg-id | 27892.1386624956@sss.pgh.pa.us обсуждение исходный текст |
| Ответ на | Re: BUG #8139: initdb: Misleading error message when current user not in /etc/passwd (Bruce Momjian <bruce@momjian.us>) |
| Ответы |
Re: BUG #8139: initdb: Misleading error message when
current user not in /etc/passwd
|
| Список | pgsql-bugs |
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
В списке pgsql-bugs по дате отправления: