From: Serge Hallyn Date: Thu, 31 Jul 2014 19:54:27 +0000 (+0000) Subject: use non-thread-safe getpwuid and getpwgid for android X-Git-Tag: lxc-1.1.0.alpha2~112 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a96a8e8c09d8146ee14663423b2b1eb21f730c63;p=thirdparty%2Flxc.git use non-thread-safe getpwuid and getpwgid for android We only call it (so far) after doing a fork(), so this is fine. If we ever need such a thing from threaded context, we'll simply need to write our own version for android. Signed-off-by: Serge Hallyn Acked-by: Stéphane Graber --- diff --git a/src/lxc/conf.c b/src/lxc/conf.c index 690013938..473d0760a 100644 --- a/src/lxc/conf.c +++ b/src/lxc/conf.c @@ -4674,56 +4674,31 @@ err: return -1; } +/* not thread-safe, do not use from api without first forking */ static char* getuname(void) { - struct passwd pwd, *result; - char *buf, *ret = NULL; - size_t bufsize; - int s; + struct passwd *result; - bufsize = sysconf(_SC_GETPW_R_SIZE_MAX); - if (bufsize == -1) - bufsize = 16384; - - buf = malloc(bufsize); - if (!buf) + result = getpwuid(geteuid()); + if (!result) return NULL; - s = getpwuid_r(geteuid(), &pwd, buf, bufsize, &result); - if (s || result == NULL) - goto out; - - ret = strdup(pwd.pw_name); -out: - free(buf); - return ret; + return strdup(result->pw_name); } +/* not thread-safe, do not use from api without first forking */ static char *getgname(void) { - struct group grp, *result; - char *buf, *ret = NULL; - size_t bufsize; - int s; + struct group *result; - bufsize = sysconf(_SC_GETGR_R_SIZE_MAX); - if (bufsize == -1) - bufsize = 16384; - - buf = malloc(bufsize); - if (!buf) + result = getgrgid(getegid()); + if (!result) return NULL; - s = getgrgid_r(geteuid(), &grp, buf, bufsize, &result); - if (s || result == NULL) - goto out; - - ret = strdup(grp.gr_name); -out: - free(buf); - return ret; + return strdup(result->gr_name); } +/* not thread-safe, do not use from api without first forking */ void suggest_default_idmap(void) { FILE *f;