This patch disable supplementary groups handling in id with uClibc versions prior to v0.9.30, which are lacking the 'getgrouplist' function. Signed-off-by: Nicolas Thill --- a/coreutils/id.c +++ b/coreutils/id.c @@ -17,10 +17,12 @@ #include "libbb.h" +#define HAVE_GETGROUPLIST 1 + #if !ENABLE_USE_BB_PWD_GRP #if defined(__UCLIBC_MAJOR__) && (__UCLIBC_MAJOR__ == 0) #if (__UCLIBC_MINOR__ < 9) || (__UCLIBC_MINOR__ == 9 && __UCLIBC_SUBLEVEL__ < 30) -#error "Sorry, you need at least uClibc version 0.9.30 for id applet to build" +#undef HAVE_GETGROUPLIST #endif #endif #endif @@ -82,7 +84,11 @@ static int get_groups(const char *userna /* If the user is a member of more than * *n groups, then -1 is returned. Otherwise >= 0. * (and no defined way of detecting errors?!) */ +#if HAVE_GETGROUPLIST m = getgrouplist(username, rgid, groups, n); +#else + *n = -1; +#endif /* I guess *n < 0 might indicate error. Anyway, * malloc'ing -1 bytes won't be good, so: */ //if (*n < 0) @@ -154,6 +160,7 @@ int id_main(int argc UNUSED_PARAM, char if (egid != rgid) status |= print_group(egid, " "); } +#if HAVE_GETGROUPLIST /* We are supplying largish buffer, trying * to not run get_groups() twice. That might be slow * ("user database in remote SQL server" case) */ @@ -181,6 +188,7 @@ int id_main(int argc UNUSED_PARAM, char } if (ENABLE_FEATURE_CLEAN_UP) free(groups); +#endif #if ENABLE_SELINUX if (is_selinux_enabled()) { if (getcon(&scontext) == 0)