diff --git a/src/bin/e_sys_main.c b/src/bin/e_sys_main.c index b7f97089e..411935f83 100644 --- a/src/bin/e_sys_main.c +++ b/src/bin/e_sys_main.c @@ -30,7 +30,7 @@ main(int argc, char **argv) int test = 0; char *action, *cmd; uid_t uid; - gid_t gid, gl[1024], egid; + gid_t gid, gl[65536], egid; for (i = 1; i < argc; i++) { @@ -62,8 +62,12 @@ main(int argc, char **argv) uid = getuid(); gid = getgid(); egid = getegid(); - gn = getgroups(1024, gl); - + gn = getgroups(65536, gl); + if (gn < 0) + { + printf("ERROR: MEMBER OF MORE THAN 65536 GROUPS\n"); + exit(3); + } if (setuid(0) != 0) { printf("ERROR: UNABLE TO ASSUME ROOT PRIVILEDGES\n");