1/*
2   Unix SMB/Netbios implementation.
3   Version 1.9.
4   Security context tests
5   Copyright (C) Tim Potter 2000
6
7   This program is free software; you can redistribute it and/or modify
8   it under the terms of the GNU General Public License as published by
9   the Free Software Foundation; either version 2 of the License, or
10   (at your option) any later version.
11
12   This program is distributed in the hope that it will be useful,
13   but WITHOUT ANY WARRANTY; without even the implied warranty of
14   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15   GNU General Public License for more details.
16
17   You should have received a copy of the GNU General Public License
18   along with this program; if not, write to the Free Software
19   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20*/
21
22#include "includes.h"
23
24/* Keep linker happy */
25
26void exit_server(char *reason) {}
27
28/* Generate random list of groups */
29
30void get_random_grouplist(int *ngroups, gid_t **groups)
31{
32	int i;
33
34	*ngroups = random() % groups_max();
35	*groups = malloc(*ngroups * sizeof(gid_t));
36
37	if (!groups) {
38		printf("FAIL: malloc random grouplist\n");
39		return;
40	}
41
42	for (i = 0; i < *ngroups; i++) {
43		(*groups)[i] = random() % 32767;
44	}
45}
46
47/* Check a list of groups with current groups */
48
49BOOL verify_current_groups(int ngroups, gid_t *groups)
50{
51	int actual_ngroups;
52	gid_t *actual_groups;
53
54	actual_ngroups = getgroups(0, NULL);
55	actual_groups = (gid_t *)malloc(actual_ngroups * sizeof(gid_t));
56
57	getgroups(actual_ngroups, actual_groups);
58
59	if (actual_ngroups != ngroups) {
60		return False;
61	}
62
63	return memcmp(actual_groups, groups, actual_ngroups *
64		      sizeof(gid_t)) == 0;
65}
66