xref: /aosp_15_r20/external/selinux/libsepol/tests/test-downgrade.h (revision 2d543d20722ada2425b5bdab9d0d1d29470e7bba)
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