mg.c uses a fixed NGROUPS contant
# New Ticket Created by casper.dik@sun.com
# Please include the string: [perl #69977]
# in the subject line of all future correspondence about this issue.
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=69977 >
This is a bug report for perl from casper.dik@sun.com,
generated with the help of perlbug 1.36 running under perl 5.10.0.
-----------------------------------------------------------------
[Please enter your report here]
In mg.c NGROUPS is defined as follows:
#if defined(HAS_SETGROUPS)
# ifndef NGROUPS
# define NGROUPS 32
# endif
#endif
and uses it later here:
2632 #ifdef HAS_SETGROUPS
2633 {
2634 const char *p = SvPV_const(sv, len);
2635 Groups_t *gary = NULL;
2636
2637 while (isSPACE(*p))
2638 ++p;
2639 PL_egid = Atol(p);
2640 for (i = 0; i < NGROUPS; ++i) {
2641 while (*p && !isSPACE(*p))
2642 ++p;
2643 while (isSPACE(*p))
2644 ++p;
2645 if (!*p)
2646 break;
2647 if(!gary)
2648 Newx(gary, i + 1, Groups_t);
2649 else
2650 Renew(gary, i + 1, Groups_t);
2651 gary[i] = Atol(p);
2652 }
2653 if (i)
2654 (void)setgroups(i, gary);
2655 Safefree(gary);
2656 }
2657 #else /* HAS_SETGROUPS */
This should be changed as follows