diff options
Diffstat (limited to 'usr/src/lib/libsocket/inet/rcmd.c')
-rw-r--r-- | usr/src/lib/libsocket/inet/rcmd.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/usr/src/lib/libsocket/inet/rcmd.c b/usr/src/lib/libsocket/inet/rcmd.c index 6a0edcac5b..d1fdcd2418 100644 --- a/usr/src/lib/libsocket/inet/rcmd.c +++ b/usr/src/lib/libsocket/inet/rcmd.c @@ -20,7 +20,7 @@ */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -37,8 +37,6 @@ * contributors. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include <limits.h> #include <stdio.h> #include <ctype.h> @@ -62,6 +60,7 @@ #include <string.h> #include <stdlib.h> #include <grp.h> +#include <alloca.h> #include <arpa/inet.h> #include <priv_utils.h> @@ -565,7 +564,8 @@ ruserok(const char *rhost, int superuser, const char *ruser, const char *luser) char pbuf[MAXPATHLEN]; uid_t uid = (uid_t)-1; gid_t gid = (gid_t)-1; - gid_t grouplist[NGROUPS_MAX]; + int maxgrp = getgroups(0, NULL); + gid_t *grouplist = alloca(maxgrp * sizeof (gid_t)); int ngroups; sp = rhost; @@ -605,7 +605,7 @@ ruserok(const char *rhost, int superuser, const char *ruser, const char *luser) */ gid = getegid(); uid = geteuid(); - if ((ngroups = getgroups(NGROUPS_MAX, grouplist)) == -1) + if ((ngroups = getgroups(maxgrp, grouplist)) == -1) return (-1); (void) setegid(pwd->pw_gid); |