diff options
author | Stef Walter <stef@thewalter.net> | 2013-07-18 10:09:45 +0200 |
---|---|---|
committer | Stef Walter <stef@thewalter.net> | 2013-07-18 13:03:48 +0200 |
commit | e8955607080342d6ed5b057567f546a5063e14f1 (patch) | |
tree | 7dd9f913629fec29dc7d4e37c46d3cd359f2ede5 | |
parent | b0f83b4e0f7672b0ee6c4ea56498cc1422bd57c7 (diff) | |
download | p11-kit-e8955607080342d6ed5b057567f546a5063e14f1.tar.gz |
Use getpwuid_r() instead of the non-thread-sofe getpwuid()
-rw-r--r-- | common/path.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/common/path.c b/common/path.c index 17cde8c..398c51e 100644 --- a/common/path.c +++ b/common/path.c @@ -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 ("couldn't lookup home directory for user %d: %s", getuid (), strerror (errno)); |