1255e72915d4cbddceb435e13d81601755714e9fSE Android/* 2255e72915d4cbddceb435e13d81601755714e9fSE Android * Author: Mary Garvin <mgarvin@tresys.com> 3255e72915d4cbddceb435e13d81601755714e9fSE Android * 4255e72915d4cbddceb435e13d81601755714e9fSE Android * Copyright (C) 2007-2008 Tresys Technology, LLC 5255e72915d4cbddceb435e13d81601755714e9fSE Android * 6255e72915d4cbddceb435e13d81601755714e9fSE Android * This library is free software; you can redistribute it and/or 7255e72915d4cbddceb435e13d81601755714e9fSE Android * modify it under the terms of the GNU Lesser General Public 8255e72915d4cbddceb435e13d81601755714e9fSE Android * License as published by the Free Software Foundation; either 9255e72915d4cbddceb435e13d81601755714e9fSE Android * version 2.1 of the License, or (at your option) any later version. 10255e72915d4cbddceb435e13d81601755714e9fSE Android * 11255e72915d4cbddceb435e13d81601755714e9fSE Android * This library is distributed in the hope that it will be useful, 12255e72915d4cbddceb435e13d81601755714e9fSE Android * but WITHOUT ANY WARRANTY; without even the implied warranty of 13255e72915d4cbddceb435e13d81601755714e9fSE Android * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14255e72915d4cbddceb435e13d81601755714e9fSE Android * Lesser General Public License for more details. 15255e72915d4cbddceb435e13d81601755714e9fSE Android * 16255e72915d4cbddceb435e13d81601755714e9fSE Android * You should have received a copy of the GNU Lesser General Public 17255e72915d4cbddceb435e13d81601755714e9fSE Android * License along with this library; if not, write to the Free Software 18255e72915d4cbddceb435e13d81601755714e9fSE Android * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 19255e72915d4cbddceb435e13d81601755714e9fSE Android */ 20255e72915d4cbddceb435e13d81601755714e9fSE Android 21255e72915d4cbddceb435e13d81601755714e9fSE Android#ifndef __TEST_DOWNGRADE_H__ 22255e72915d4cbddceb435e13d81601755714e9fSE Android#define __TEST_DOWNGRADE_H__ 23255e72915d4cbddceb435e13d81601755714e9fSE Android 24255e72915d4cbddceb435e13d81601755714e9fSE Android#include <CUnit/Basic.h> 25255e72915d4cbddceb435e13d81601755714e9fSE Android#include <sepol/policydb/policydb.h> 26255e72915d4cbddceb435e13d81601755714e9fSE Android 27255e72915d4cbddceb435e13d81601755714e9fSE Android/* 28255e72915d4cbddceb435e13d81601755714e9fSE Android * Function Name: downgrade_test_init 29255e72915d4cbddceb435e13d81601755714e9fSE Android * 30255e72915d4cbddceb435e13d81601755714e9fSE Android * Input: None 31255e72915d4cbddceb435e13d81601755714e9fSE Android * 32255e72915d4cbddceb435e13d81601755714e9fSE Android * Output: None 33255e72915d4cbddceb435e13d81601755714e9fSE Android * 34255e72915d4cbddceb435e13d81601755714e9fSE Android * Description: Initialize the policydb (policy data base structure) 35255e72915d4cbddceb435e13d81601755714e9fSE Android */ 36255e72915d4cbddceb435e13d81601755714e9fSE Androidint downgrade_test_init(void); 37255e72915d4cbddceb435e13d81601755714e9fSE Android 38255e72915d4cbddceb435e13d81601755714e9fSE Android/* 39255e72915d4cbddceb435e13d81601755714e9fSE Android * Function Name: downgrade_test_cleanup 40255e72915d4cbddceb435e13d81601755714e9fSE Android * 41255e72915d4cbddceb435e13d81601755714e9fSE Android * Input: None 42255e72915d4cbddceb435e13d81601755714e9fSE Android * 43255e72915d4cbddceb435e13d81601755714e9fSE Android * Output: None 44255e72915d4cbddceb435e13d81601755714e9fSE Android * 45255e72915d4cbddceb435e13d81601755714e9fSE Android * Description: Destroys policydb structure 46255e72915d4cbddceb435e13d81601755714e9fSE Android */ 47255e72915d4cbddceb435e13d81601755714e9fSE Androidint downgrade_test_cleanup(void); 48255e72915d4cbddceb435e13d81601755714e9fSE Android 49255e72915d4cbddceb435e13d81601755714e9fSE Android/* 50255e72915d4cbddceb435e13d81601755714e9fSE Android * Function Name: downgrade_add_tests 51255e72915d4cbddceb435e13d81601755714e9fSE Android * 52255e72915d4cbddceb435e13d81601755714e9fSE Android * Input: CU_pSuite 53255e72915d4cbddceb435e13d81601755714e9fSE Android * 54255e72915d4cbddceb435e13d81601755714e9fSE Android * Output: Returns 0 upon success. Upon failure, a CUnit testing error 55255e72915d4cbddceb435e13d81601755714e9fSE Android * value is returned 56255e72915d4cbddceb435e13d81601755714e9fSE Android * 57255e72915d4cbddceb435e13d81601755714e9fSE Android * Description: Add the given downgrade tests to the downgrade suite. 58255e72915d4cbddceb435e13d81601755714e9fSE Android */ 59255e72915d4cbddceb435e13d81601755714e9fSE Androidint downgrade_add_tests(CU_pSuite suite); 60255e72915d4cbddceb435e13d81601755714e9fSE Android 61255e72915d4cbddceb435e13d81601755714e9fSE Android/* 62255e72915d4cbddceb435e13d81601755714e9fSE Android * Function Name: test_downgrade_possible 63255e72915d4cbddceb435e13d81601755714e9fSE Android * 64255e72915d4cbddceb435e13d81601755714e9fSE Android * Input: None 65255e72915d4cbddceb435e13d81601755714e9fSE Android * 66255e72915d4cbddceb435e13d81601755714e9fSE Android * Output: None 67255e72915d4cbddceb435e13d81601755714e9fSE Android * 68255e72915d4cbddceb435e13d81601755714e9fSE Android * Description: Tests the backward compatability of MLS and Non-MLS binary 69255e72915d4cbddceb435e13d81601755714e9fSE Android * policy versions. 70255e72915d4cbddceb435e13d81601755714e9fSE Android */ 71255e72915d4cbddceb435e13d81601755714e9fSE Androidvoid test_downgrade(void); 72255e72915d4cbddceb435e13d81601755714e9fSE Android 73255e72915d4cbddceb435e13d81601755714e9fSE Android/* 74255e72915d4cbddceb435e13d81601755714e9fSE Android * Function Name: do_downgrade_test 75255e72915d4cbddceb435e13d81601755714e9fSE Android * 76255e72915d4cbddceb435e13d81601755714e9fSE Android * Input: int that represents a 0 for Non-MLS policy and a 77255e72915d4cbddceb435e13d81601755714e9fSE Android * 1 for MLS policy downgrade testing 78255e72915d4cbddceb435e13d81601755714e9fSE Android * 79255e72915d4cbddceb435e13d81601755714e9fSE Android * Output: (int) 0 on success, negative number upon failure 80255e72915d4cbddceb435e13d81601755714e9fSE Android * 81255e72915d4cbddceb435e13d81601755714e9fSE Android * Description: This function handles the downgrade testing. A binary policy 82255e72915d4cbddceb435e13d81601755714e9fSE Android * is read into the policydb structure, the policy version is 83255e72915d4cbddceb435e13d81601755714e9fSE Android * decreased by a specific amount, written back out and then read 84255e72915d4cbddceb435e13d81601755714e9fSE Android * back in again. The process is iterative until the minimum 85255e72915d4cbddceb435e13d81601755714e9fSE Android * policy version is reached. 86255e72915d4cbddceb435e13d81601755714e9fSE Android */ 87255e72915d4cbddceb435e13d81601755714e9fSE Androidint do_downgrade_test(int mls); 88255e72915d4cbddceb435e13d81601755714e9fSE Android 89255e72915d4cbddceb435e13d81601755714e9fSE Android/* 90255e72915d4cbddceb435e13d81601755714e9fSE Android * Function Name: read_binary_policy 91255e72915d4cbddceb435e13d81601755714e9fSE Android * 92255e72915d4cbddceb435e13d81601755714e9fSE Android * Input: char * which is the path to the file containing the binary policy 93255e72915d4cbddceb435e13d81601755714e9fSE Android * 94255e72915d4cbddceb435e13d81601755714e9fSE Android * Output: Returns 0 upon success. Upon failure, -1 is returned. 95255e72915d4cbddceb435e13d81601755714e9fSE Android * Possible failures are, filename with given path does not exist, 96255e72915d4cbddceb435e13d81601755714e9fSE Android * a failure to open the file, or a failure from prolicydb_read 97255e72915d4cbddceb435e13d81601755714e9fSE Android * function call. 98255e72915d4cbddceb435e13d81601755714e9fSE Android * 99255e72915d4cbddceb435e13d81601755714e9fSE Android * Description: Get a filename, open file and read in the binary policy 100255e72915d4cbddceb435e13d81601755714e9fSE Android * into the policydb structure. 101255e72915d4cbddceb435e13d81601755714e9fSE Android */ 102255e72915d4cbddceb435e13d81601755714e9fSE Androidint read_binary_policy(const char *path, policydb_t *); 103255e72915d4cbddceb435e13d81601755714e9fSE Android 104255e72915d4cbddceb435e13d81601755714e9fSE Android/* 105255e72915d4cbddceb435e13d81601755714e9fSE Android * Function Name: write_binary_policy 106255e72915d4cbddceb435e13d81601755714e9fSE Android * 107255e72915d4cbddceb435e13d81601755714e9fSE Android * Input: char * which is the path to the file containing the binary policy 108255e72915d4cbddceb435e13d81601755714e9fSE Android * 109255e72915d4cbddceb435e13d81601755714e9fSE Android * Output: Returns 0 upon success. Upon failure, -1 is returned. 110255e72915d4cbddceb435e13d81601755714e9fSE Android * Possible failures are, filename with given path does not exist, 111255e72915d4cbddceb435e13d81601755714e9fSE Android * a failure to open the file, or a failure from prolicydb_read 112255e72915d4cbddceb435e13d81601755714e9fSE Android * function call. 113255e72915d4cbddceb435e13d81601755714e9fSE Android * 114255e72915d4cbddceb435e13d81601755714e9fSE Android * Description: Get a filename, open file and read in the binary policy 115255e72915d4cbddceb435e13d81601755714e9fSE Android * into the policydb structure. 116255e72915d4cbddceb435e13d81601755714e9fSE Android */ 117255e72915d4cbddceb435e13d81601755714e9fSE Androidint write_binary_policy(const char *path, policydb_t *); 118255e72915d4cbddceb435e13d81601755714e9fSE Android 119255e72915d4cbddceb435e13d81601755714e9fSE Android#endif 120