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