summaryrefslogtreecommitdiff
path: root/usr/src/lib/libbsm/common/adt_token.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/lib/libbsm/common/adt_token.c')
-rw-r--r--usr/src/lib/libbsm/common/adt_token.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/usr/src/lib/libbsm/common/adt_token.c b/usr/src/lib/libbsm/common/adt_token.c
index fcb537e3f5..f217e6737e 100644
--- a/usr/src/lib/libbsm/common/adt_token.c
+++ b/usr/src/lib/libbsm/common/adt_token.c
@@ -32,6 +32,7 @@
#include <bsm/audit.h>
#include <adt_xlate.h>
+#include <alloca.h>
#include <assert.h>
#include <netdb.h>
#include <priv.h>
@@ -598,10 +599,10 @@ adt_to_subject(datadef *def, void *p_data, int required,
if (sp->as_session_model == ADT_PROCESS_MODEL) {
if (sp->as_kernel_audit_policy & AUDIT_GROUP) {
int group_count;
- gid_t grouplist[NGROUPS_MAX];
+ int maxgrp = getgroups(0, NULL);
+ gid_t *grouplist = alloca(maxgrp * sizeof (gid_t));
- if ((group_count = getgroups(NGROUPS_UMAX,
- grouplist)) > 0) {
+ if ((group_count = getgroups(maxgrp, grouplist)) > 0) {
(void) au_write(event->ae_event_handle,
au_to_newgroups(group_count, grouplist));
}