Archived
1
0
This repository has been archived on 2024-07-22. You can view files and clone it, but cannot push or open issues or pull requests.
Files
archive/package/busybox/patches/803-id_getgrouplist.patch

50 lines
1.5 KiB
Diff
Raw Permalink Normal View History

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 <nico@openwrt.org>
--- 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)