]> granicus.if.org Git - p11-kit/commitdiff
Use getpwuid_r() instead of the non-thread-sofe getpwuid()
authorStef Walter <stef@thewalter.net>
Thu, 18 Jul 2013 08:09:45 +0000 (10:09 +0200)
committerStef Walter <stef@thewalter.net>
Thu, 18 Jul 2013 11:04:37 +0000 (13:04 +0200)
common/path.c

index f7bd2b97b5074f9c1a987dd430a42a4e4d72bcaa..3c714d54a98ecabb9837544e2981143421eba694 100644 (file)
@@ -131,11 +131,18 @@ expand_homedir (const char *remainder)
 
        } else {
 #ifdef OS_UNIX
+               char buf[1024];
+               struct passwd pws;
                struct passwd *pwd;
                int error = 0;
+               int ret;
 
-               pwd = getpwuid (getuid ());
-               if (!pwd) {
+               ret = getpwuid_r (getuid (), &pws, buf, sizeof (buf), &pwd);
+               if (ret == 0 && !pwd) {
+                       ret = -1;
+                       errno = ESRCH;
+               }
+               if (ret < 0) {
                        error = errno;
                        p11_message_err (errno, "couldn't lookup home directory for user %d", getuid ());
                        errno = error;