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 3 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, see <http://www.gnu.org/licenses/>. 19*/ 20 21#include "includes.h" 22#include "se_access_check_utils.h" 23 24/* Globals */ 25 26BOOL failed; 27 28/* Check that access is always allowed for a NULL security descriptor */ 29 30BOOL nullsd_check(struct passwd *pw, int ngroups, gid_t *groups) 31{ 32 uint32 acc_granted, status; 33 BOOL result; 34 35 result = se_access_check(NULL, pw->pw_uid, pw->pw_gid, 36 ngroups, groups, 37 SEC_RIGHTS_MAXIMUM_ALLOWED, 38 &acc_granted, &status); 39 40 if (!result || status != NT_STATUS_NO_PROBLEMO || 41 acc_granted != SEC_RIGHTS_MAXIMUM_ALLOWED) { 42 printf("FAIL: null se_access_check %d/%d\n", 43 pw->pw_uid, pw->pw_gid); 44 failed = True; 45 } 46 47 printf("access check passed for user %s (%d/%d)\n", 48 pw->pw_name, pw->pw_uid, pw->pw_gid); 49 50 return True; 51} 52 53/* Main function */ 54 55int main(int argc, char **argv) 56{ 57 /* Initialisation */ 58 59 generate_wellknown_sids(); 60 61 /* Run test */ 62 63 visit_pwdb(nullsd_check); 64 65 /* Return */ 66 67 if (!failed) { 68 printf("PASS\n"); 69 return 0; 70 } 71 72 return 1; 73} 74