From 5c0f1b3b2fb0653a4463e005bfc39b9b6d2934fd Mon Sep 17 00:00:00 2001 From: =?utf8?q?St=C3=A9phane=20Graber?= Date: Thu, 3 Jan 2013 11:51:52 -0500 Subject: [PATCH] lxc_unshare: Replace getpw*_r by getpw* MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Bionic and maybe some other libc implementations lack the _r nss functions. This replaces our current getpwnam_r and getpwuid_r calls by getpwnam and getpwuid. Signed-off-by: Stéphane Graber Acked-by: Serge E. Hallyn --- src/lxc/lxc_unshare.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/lxc/lxc_unshare.c b/src/lxc/lxc_unshare.c index 3a848b23d..df91456d8 100644 --- a/src/lxc/lxc_unshare.c +++ b/src/lxc/lxc_unshare.c @@ -54,12 +54,9 @@ void usage(char *cmd) static uid_t lookup_user(const char *optarg) { - int bufflen = sysconf(_SC_GETPW_R_SIZE_MAX); - char buff[bufflen]; char name[sysconf(_SC_LOGIN_NAME_MAX)]; uid_t uid = -1; - struct passwd pwent; - struct passwd *pent; + struct passwd *pwent = NULL; if (!optarg || (optarg[0] == '\0')) return uid; @@ -69,13 +66,15 @@ static uid_t lookup_user(const char *optarg) if (sscanf(optarg, "%s", name) < 1) return uid; - if (getpwnam_r(name, &pwent, buff, bufflen, &pent) || !pent) { + pwent = getpwnam(name); + if (!pwent) { ERROR("invalid username %s", name); return uid; } - uid = pent->pw_uid; + uid = pwent->pw_uid; } else { - if (getpwuid_r(uid, &pwent, buff, bufflen, &pent) || !pent) { + pwent = getpwuid(uid); + if (!pwent) { ERROR("invalid uid %d", uid); uid = -1; return uid; -- 2.39.5