1*2d543d20SAndroid Build Coastguard Worker /* 2*2d543d20SAndroid Build Coastguard Worker * Author: Mary Garvin <[email protected]> 3*2d543d20SAndroid Build Coastguard Worker * 4*2d543d20SAndroid Build Coastguard Worker * Copyright (C) 2007-2008 Tresys Technology, LLC 5*2d543d20SAndroid Build Coastguard Worker * 6*2d543d20SAndroid Build Coastguard Worker * This library is free software; you can redistribute it and/or 7*2d543d20SAndroid Build Coastguard Worker * modify it under the terms of the GNU Lesser General Public 8*2d543d20SAndroid Build Coastguard Worker * License as published by the Free Software Foundation; either 9*2d543d20SAndroid Build Coastguard Worker * version 2.1 of the License, or (at your option) any later version. 10*2d543d20SAndroid Build Coastguard Worker * 11*2d543d20SAndroid Build Coastguard Worker * This library is distributed in the hope that it will be useful, 12*2d543d20SAndroid Build Coastguard Worker * but WITHOUT ANY WARRANTY; without even the implied warranty of 13*2d543d20SAndroid Build Coastguard Worker * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14*2d543d20SAndroid Build Coastguard Worker * Lesser General Public License for more details. 15*2d543d20SAndroid Build Coastguard Worker * 16*2d543d20SAndroid Build Coastguard Worker * You should have received a copy of the GNU Lesser General Public 17*2d543d20SAndroid Build Coastguard Worker * License along with this library; if not, write to the Free Software 18*2d543d20SAndroid Build Coastguard Worker * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 19*2d543d20SAndroid Build Coastguard Worker */ 20*2d543d20SAndroid Build Coastguard Worker 21*2d543d20SAndroid Build Coastguard Worker #ifndef __TEST_DOWNGRADE_H__ 22*2d543d20SAndroid Build Coastguard Worker #define __TEST_DOWNGRADE_H__ 23*2d543d20SAndroid Build Coastguard Worker 24*2d543d20SAndroid Build Coastguard Worker #include <CUnit/Basic.h> 25*2d543d20SAndroid Build Coastguard Worker #include <sepol/policydb/policydb.h> 26*2d543d20SAndroid Build Coastguard Worker 27*2d543d20SAndroid Build Coastguard Worker /* 28*2d543d20SAndroid Build Coastguard Worker * Function Name: downgrade_test_init 29*2d543d20SAndroid Build Coastguard Worker * 30*2d543d20SAndroid Build Coastguard Worker * Input: None 31*2d543d20SAndroid Build Coastguard Worker * 32*2d543d20SAndroid Build Coastguard Worker * Output: None 33*2d543d20SAndroid Build Coastguard Worker * 34*2d543d20SAndroid Build Coastguard Worker * Description: Initialize the policydb (policy data base structure) 35*2d543d20SAndroid Build Coastguard Worker */ 36*2d543d20SAndroid Build Coastguard Worker int downgrade_test_init(void); 37*2d543d20SAndroid Build Coastguard Worker 38*2d543d20SAndroid Build Coastguard Worker /* 39*2d543d20SAndroid Build Coastguard Worker * Function Name: downgrade_test_cleanup 40*2d543d20SAndroid Build Coastguard Worker * 41*2d543d20SAndroid Build Coastguard Worker * Input: None 42*2d543d20SAndroid Build Coastguard Worker * 43*2d543d20SAndroid Build Coastguard Worker * Output: None 44*2d543d20SAndroid Build Coastguard Worker * 45*2d543d20SAndroid Build Coastguard Worker * Description: Destroys policydb structure 46*2d543d20SAndroid Build Coastguard Worker */ 47*2d543d20SAndroid Build Coastguard Worker int downgrade_test_cleanup(void); 48*2d543d20SAndroid Build Coastguard Worker 49*2d543d20SAndroid Build Coastguard Worker /* 50*2d543d20SAndroid Build Coastguard Worker * Function Name: downgrade_add_tests 51*2d543d20SAndroid Build Coastguard Worker * 52*2d543d20SAndroid Build Coastguard Worker * Input: CU_pSuite 53*2d543d20SAndroid Build Coastguard Worker * 54*2d543d20SAndroid Build Coastguard Worker * Output: Returns 0 upon success. Upon failure, a CUnit testing error 55*2d543d20SAndroid Build Coastguard Worker * value is returned 56*2d543d20SAndroid Build Coastguard Worker * 57*2d543d20SAndroid Build Coastguard Worker * Description: Add the given downgrade tests to the downgrade suite. 58*2d543d20SAndroid Build Coastguard Worker */ 59*2d543d20SAndroid Build Coastguard Worker int downgrade_add_tests(CU_pSuite suite); 60*2d543d20SAndroid Build Coastguard Worker 61*2d543d20SAndroid Build Coastguard Worker /* 62*2d543d20SAndroid Build Coastguard Worker * Function Name: test_downgrade_possible 63*2d543d20SAndroid Build Coastguard Worker * 64*2d543d20SAndroid Build Coastguard Worker * Input: None 65*2d543d20SAndroid Build Coastguard Worker * 66*2d543d20SAndroid Build Coastguard Worker * Output: None 67*2d543d20SAndroid Build Coastguard Worker * 68*2d543d20SAndroid Build Coastguard Worker * Description: Tests the backward compatibility of MLS and Non-MLS binary 69*2d543d20SAndroid Build Coastguard Worker * policy versions. 70*2d543d20SAndroid Build Coastguard Worker */ 71*2d543d20SAndroid Build Coastguard Worker void test_downgrade(void); 72*2d543d20SAndroid Build Coastguard Worker 73*2d543d20SAndroid Build Coastguard Worker /* 74*2d543d20SAndroid Build Coastguard Worker * Function Name: do_downgrade_test 75*2d543d20SAndroid Build Coastguard Worker * 76*2d543d20SAndroid Build Coastguard Worker * Input: int that represents a 0 for Non-MLS policy and a 77*2d543d20SAndroid Build Coastguard Worker * 1 for MLS policy downgrade testing 78*2d543d20SAndroid Build Coastguard Worker * 79*2d543d20SAndroid Build Coastguard Worker * Output: (int) 0 on success, negative number upon failure 80*2d543d20SAndroid Build Coastguard Worker * 81*2d543d20SAndroid Build Coastguard Worker * Description: This function handles the downgrade testing. A binary policy 82*2d543d20SAndroid Build Coastguard Worker * is read into the policydb structure, the policy version is 83*2d543d20SAndroid Build Coastguard Worker * decreased by a specific amount, written back out and then read 84*2d543d20SAndroid Build Coastguard Worker * back in again. The process is iterative until the minimum 85*2d543d20SAndroid Build Coastguard Worker * policy version is reached. 86*2d543d20SAndroid Build Coastguard Worker */ 87*2d543d20SAndroid Build Coastguard Worker int do_downgrade_test(int mls); 88*2d543d20SAndroid Build Coastguard Worker 89*2d543d20SAndroid Build Coastguard Worker /* 90*2d543d20SAndroid Build Coastguard Worker * Function Name: read_binary_policy 91*2d543d20SAndroid Build Coastguard Worker * 92*2d543d20SAndroid Build Coastguard Worker * Input: char * which is the path to the file containing the binary policy 93*2d543d20SAndroid Build Coastguard Worker * 94*2d543d20SAndroid Build Coastguard Worker * Output: Returns 0 upon success. Upon failure, -1 is returned. 95*2d543d20SAndroid Build Coastguard Worker * Possible failures are, filename with given path does not exist, 96*2d543d20SAndroid Build Coastguard Worker * a failure to open the file, or a failure from prolicydb_read 97*2d543d20SAndroid Build Coastguard Worker * function call. 98*2d543d20SAndroid Build Coastguard Worker * 99*2d543d20SAndroid Build Coastguard Worker * Description: Get a filename, open file and read in the binary policy 100*2d543d20SAndroid Build Coastguard Worker * into the policydb structure. 101*2d543d20SAndroid Build Coastguard Worker */ 102*2d543d20SAndroid Build Coastguard Worker int read_binary_policy(const char *path, policydb_t *); 103*2d543d20SAndroid Build Coastguard Worker 104*2d543d20SAndroid Build Coastguard Worker /* 105*2d543d20SAndroid Build Coastguard Worker * Function Name: write_binary_policy 106*2d543d20SAndroid Build Coastguard Worker * 107*2d543d20SAndroid Build Coastguard Worker * Input: char * which is the path to the file containing the binary policy 108*2d543d20SAndroid Build Coastguard Worker * 109*2d543d20SAndroid Build Coastguard Worker * Output: Returns 0 upon success. Upon failure, -1 is returned. 110*2d543d20SAndroid Build Coastguard Worker * Possible failures are, filename with given path does not exist, 111*2d543d20SAndroid Build Coastguard Worker * a failure to open the file, or a failure from prolicydb_read 112*2d543d20SAndroid Build Coastguard Worker * function call. 113*2d543d20SAndroid Build Coastguard Worker * 114*2d543d20SAndroid Build Coastguard Worker * Description: Get a filename, open file and read in the binary policy 115*2d543d20SAndroid Build Coastguard Worker * into the policydb structure. 116*2d543d20SAndroid Build Coastguard Worker */ 117*2d543d20SAndroid Build Coastguard Worker int write_binary_policy(const char *path, policydb_t *); 118*2d543d20SAndroid Build Coastguard Worker 119*2d543d20SAndroid Build Coastguard Worker #endif 120