On Mon, May 6, 2013 at 7:51 PM, Friedrich Locke
<friedrich.lo...@gmail.com> wrote:
> As Noah Pugsley noted: it should have worked, regardless error checking
> code is not right.
>
> As asked:
>
> sioux@scallop$ ls -l /etc/pwd.db /etc/spwd.db
> -rw-r--r--  1 root  wheel    1220608 May  1 12:41 /etc/pwd.db
> -rw-r-----  1 root  _shadow  1273856 May  1 12:41 /etc/spwd.db
> sioux@scallop$
>
> I am running as and ordinary user.

i'm surprised most obvious question isn't being asked: OBSD version,
or more generically dmesg output.

$ cat > /tmp/s.c
#include <sys/types.h>
#include <errno.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <pwd.h>

int main(int argc, char *argv[])
{
        int     e;
        struct passwd   *p;

        e = errno;
        errno = 0;

        p = getpwuid(0);
        printf("p=%p\nerrno=%d\n", p, errno);
        if (p)
                printf("pw_name=%s\n", p->pw_name);

        endpwent();
        printf("\n--patrick\n");
        exit(0);
}
$ cc -g -O0 /tmp/s.c -o /tmp/s
$ /tmp/s
p=0x17cdf179a960
errno=0
pw_name=root

--patrick

Reply via email to