diff options
author | Karel Zak | 2012-01-31 14:23:26 +0100 |
---|---|---|
committer | Karel Zak | 2012-01-31 14:23:26 +0100 |
commit | fc01644d533fb23c4019262304e477cd634f290d (patch) | |
tree | 3df04df78e1801095e9acd1d865f4c6c8a59e2e3 /login-utils/login.c | |
parent | blkid: check fd before use [coverity scan] (diff) | |
download | kernel-qcow2-util-linux-fc01644d533fb23c4019262304e477cd634f290d.tar.gz kernel-qcow2-util-linux-fc01644d533fb23c4019262304e477cd634f290d.tar.xz kernel-qcow2-util-linux-fc01644d533fb23c4019262304e477cd634f290d.zip |
login: more robust sysconf() usage [coverity scan]
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'login-utils/login.c')
-rw-r--r-- | login-utils/login.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/login-utils/login.c b/login-utils/login.c index e80b137ba..3a904f2f8 100644 --- a/login-utils/login.c +++ b/login-utils/login.c @@ -644,18 +644,19 @@ static struct passwd *get_passwd_entry(const char *username, struct passwd *pwd) { struct passwd *res = NULL; - size_t sz; + size_t sz = 16384; int x; if (!pwdbuf || !username) return NULL; #ifdef _SC_GETPW_R_SIZE_MAX - sz = sysconf(_SC_GETPW_R_SIZE_MAX); - if (sz <= 0) + { + long xsz = sysconf(_SC_GETPW_R_SIZE_MAX); + if (xsz > 0) + sz = (size_t) xsz; + } #endif - sz = 16384; - *pwdbuf = xrealloc(*pwdbuf, sz); x = getpwnam_r(username, pwd, *pwdbuf, sz, &res); |