test re-entrant getpwnam_r
authord <d@openbsd.org>
Thu, 23 Mar 2000 05:18:33 +0000 (05:18 +0000)
committerd <d@openbsd.org>
Thu, 23 Mar 2000 05:18:33 +0000 (05:18 +0000)
lib/libc_r/TEST/test_pw.c

index 1bf41d7..cc23e6f 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: test_pw.c,v 1.4 2000/01/06 06:58:34 d Exp $   */
+/*     $OpenBSD: test_pw.c,v 1.5 2000/03/23 05:18:33 d Exp $   */
 #include <stdio.h>
 #include <sys/types.h>
 #include <unistd.h>
@@ -9,6 +9,9 @@ int
 main()
 {
        struct passwd *pw;
+       struct passwd pwbuf;
+       char buf[8192];
+       char name[16];
 
        CHECKn(pw = getpwuid(getuid()));
        printf("getpwuid(%d) => %p\n", getuid(), pw);
@@ -16,5 +19,10 @@ main()
            "class: %s\ngecos: %s\n  dir: %s\nshell: %s\n",
            pw->pw_name, pw->pw_uid, pw->pw_gid,
            pw->pw_class, pw->pw_gecos, pw->pw_dir, pw->pw_shell);
+
+       strlcpy(name, pw->pw_name, sizeof name);
+       CHECKe(getpwnam_r(name, &pwbuf, buf, sizeof buf, &pw));
+       ASSERT(pwbuf.pw_uid == getuid());
+
        SUCCEED;
 }