The following bug has been logged on the website:

Bug reference:      8139
Logged by:          Nicolas Marchildon
Email address:      nico...@marchildon.net
PostgreSQL version: 9.2.4
Operating system:   RHEL 6
Description:        

Running initdb while logged in as a user that has no entry in /etc/passwd,
which happens when authenticating with Kerberos, and missing sssd-client
prints a misleading error message:

"initdb: could not obtain information about current user: Success"

The misleading part is the "Success". This comes from errno:

        pw = getpwuid(geteuid());
        if (!pw)
        {
                fprintf(stderr,
                          _("%s: could not obtain information about current
user: %s\n"),
                                progname, strerror(errno));
                exit(1);
        }

The man page says:

RETURN VALUE
       The  getpwnam()  and  getpwuid() functions return a pointer to a
passwd
       structure, or NULL if the matching entry  is  not  found  or  an 
error
       occurs.   If an error occurs, errno is set appropriately.  If one
wants
       to check errno after the call, it should be  set  to  zero  before 
the
       call.

First, initdb's get_id function does not set errno to zero, which is a bug.
Second, when the return value is NULL, it should only print strerror(errno)
when errno != 0.



-- 
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

Reply via email to