BUG #4837: initdb segv's if getpwuid fails
От | David Vitek |
---|---|
Тема | BUG #4837: initdb segv's if getpwuid fails |
Дата | |
Msg-id | 200906031521.n53FL85e054804@wwwmaster.postgresql.org обсуждение исходный текст |
Ответы |
Re: BUG #4837: initdb segv's if getpwuid fails
|
Список | pgsql-bugs |
The following bug has been logged online: Bug reference: 4837 Logged by: David Vitek Email address: dvitek@grammatech.com PostgreSQL version: 8.3 Operating system: Non-Windows Description: initdb segv's if getpwuid fails Details: We've seen this happen in a deployment, and we are currently assuming the user has some configuration problem. Here's a patch (ignore the revisions): Index: src/bin/initdb/initdb.c =================================================================== --- src/bin/initdb/initdb.c (revision 48282) +++ src/bin/initdb/initdb.c (working copy) @@ -660,10 +660,18 @@ #ifndef WIN32 struct passwd *pw; + uid_t uid = geteuid(); - pw = getpwuid(geteuid()); + errno = 0; /* getpwuid may not alter errno on failure */ + pw = getpwuid(uid); + if( !pw ) + { + fprintf(stderr, _("%s: getpwuid failed: %s\n"), + progname, strerror(errno)); + exit(1); + } - if (geteuid() == 0) /* 0 is root's uid */ + if (uid == 0) /* 0 is root's uid */ { fprintf(stderr, _("%s: cannot be run as root\n"
В списке pgsql-bugs по дате отправления: