Don't crash initdb when we fail to get the current username.

Give an error message and exit instead, like we do elsewhere...

Per report from Wez Furlong and Robert Treat.
This commit is contained in:
Magnus Hagander 2009-03-31 18:58:20 +00:00
parent d60fdd2502
commit 9350a4ce20

View file

@ -39,7 +39,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
* Portions taken from FreeBSD.
*
* $PostgreSQL: pgsql/src/bin/initdb/initdb.c,v 1.73.4.4 2006/05/21 19:57:39 momjian Exp $
* $PostgreSQL: pgsql/src/bin/initdb/initdb.c,v 1.73.4.5 2009/03/31 18:58:20 mha Exp $
*
*-------------------------------------------------------------------------
*/
@ -639,7 +639,13 @@ get_id(void)
exit(1);
}
#endif
if (!pw)
{
fprintf(stderr,
_("%s: could not obtain information about current user: %s\n"),
progname, strerror(errno));
exit(1);
}
#else /* the windows code */
struct passwd_win32
@ -651,7 +657,12 @@ get_id(void)
DWORD pwname_size = sizeof(pass_win32.pw_name) - 1;
pw->pw_uid = 1;
GetUserName(pw->pw_name, &pwname_size);
if (!GetUserName(pw->pw_name, &pwname_size))
{
fprintf(stderr, _("%s: could not get current user name: %s\n"),
progname, strerror(errno));
exit(1);
}
#endif
return xstrdup(pw->pw_name);