]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
use non-thread-safe getpwuid and getpwgid for android
authorSerge Hallyn <serge.hallyn@ubuntu.com>
Thu, 31 Jul 2014 19:54:27 +0000 (19:54 +0000)
committerStéphane Graber <stgraber@ubuntu.com>
Thu, 31 Jul 2014 19:58:31 +0000 (15:58 -0400)
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 <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
src/lxc/conf.c

index 690013938a8acd2ab345b4048a1db933e2b528aa..473d0760a7e7f9254cf2ee42a2763219e4e00ad5 100644 (file)
@@ -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;