summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorRobert Milasan <rmilasan@suse.com>2015-07-30 11:27:13 +0200
committerStef Walter <stefw@redhat.com>2015-07-31 12:13:42 +0200
commit3a005e75a4e1b63db8e19ea0e73479588ab345a6 (patch)
tree52959d266fab1702d724ef7d082997aa5786f9f0 /common
parentac151af6e41242eb46689f326311195b5f7b65fc (diff)
Fix trust command segfaults in expand_homedir() when no matching password record was found
Hello, it looks like under some conditions, command trust segfaults in expand_homedir() due to no matching password record was found: Signed-off-by: Robert Milasan <rmilasan@suse.com> Signed-off-by: Stef Walter <stefw@redhat.com> * Updated path so message is printed and errno is not overwritten https://bugs.freedesktop.org/show_bug.cgi?id=91506
Diffstat (limited to 'common')
-rw-r--r--common/path.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/common/path.c b/common/path.c
index 3c714d5..34c00cb 100644
--- a/common/path.c
+++ b/common/path.c
@@ -133,18 +133,18 @@ expand_homedir (const char *remainder)
#ifdef OS_UNIX
char buf[1024];
struct passwd pws;
- struct passwd *pwd;
- int error = 0;
+ struct passwd *pwd = NULL;
+ int error;
int ret;
+ errno = 0;
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 ());
+ if (pwd == NULL) {
+ if (ret == 0)
+ error = ESRCH;
+ else
+ error = errno;
+ p11_message_err (error, "couldn't lookup home directory for user %d", getuid ());
errno = error;
return NULL;
}