| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <stddef.h> | 5 #include "sandbox/win/src/sandbox_types.h" |
| 6 #include <stdint.h> | 6 #include "sandbox/win/src/sandbox_nt_types.h" |
| 7 | 7 #include "sandbox/win/src/policy_engine_params.h" |
| 8 #include "sandbox/win/src/policy_engine_opcodes.h" | 8 #include "sandbox/win/src/policy_engine_opcodes.h" |
| 9 #include "sandbox/win/src/policy_engine_params.h" | |
| 10 #include "sandbox/win/src/sandbox_nt_types.h" | |
| 11 #include "sandbox/win/src/sandbox_types.h" | |
| 12 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
| 13 | 10 |
| 14 | 11 |
| 15 #define INIT_GLOBAL_RTL(member) \ | 12 #define INIT_GLOBAL_RTL(member) \ |
| 16 g_nt.member = reinterpret_cast<member##Function>( \ | 13 g_nt.member = reinterpret_cast<member##Function>( \ |
| 17 ::GetProcAddress(ntdll, #member)); \ | 14 ::GetProcAddress(ntdll, #member)); \ |
| 18 if (NULL == g_nt.member) \ | 15 if (NULL == g_nt.member) \ |
| 19 return false | 16 return false |
| 20 | 17 |
| 21 namespace sandbox { | 18 namespace sandbox { |
| (...skipping 19 matching lines...) Expand all Loading... |
| 41 } | 38 } |
| 42 | 39 |
| 43 TEST(PolicyEngineTest, ParameterSetTest) { | 40 TEST(PolicyEngineTest, ParameterSetTest) { |
| 44 void* pv1 = reinterpret_cast<void*>(0x477EAA5); | 41 void* pv1 = reinterpret_cast<void*>(0x477EAA5); |
| 45 const void* pv2 = reinterpret_cast<void*>(0x987654); | 42 const void* pv2 = reinterpret_cast<void*>(0x987654); |
| 46 ParameterSet pset1 = ParamPickerMake(pv1); | 43 ParameterSet pset1 = ParamPickerMake(pv1); |
| 47 ParameterSet pset2 = ParamPickerMake(pv2); | 44 ParameterSet pset2 = ParamPickerMake(pv2); |
| 48 | 45 |
| 49 // Test that we can store and retrieve a void pointer: | 46 // Test that we can store and retrieve a void pointer: |
| 50 const void* result1 =0; | 47 const void* result1 =0; |
| 51 uint32_t result2 = 0; | 48 uint32 result2 = 0; |
| 52 EXPECT_TRUE(pset1.Get(&result1)); | 49 EXPECT_TRUE(pset1.Get(&result1)); |
| 53 EXPECT_TRUE(pv1 == result1); | 50 EXPECT_TRUE(pv1 == result1); |
| 54 EXPECT_FALSE(pset1.Get(&result2)); | 51 EXPECT_FALSE(pset1.Get(&result2)); |
| 55 EXPECT_TRUE(pset2.Get(&result1)); | 52 EXPECT_TRUE(pset2.Get(&result1)); |
| 56 EXPECT_TRUE(pv2 == result1); | 53 EXPECT_TRUE(pv2 == result1); |
| 57 EXPECT_FALSE(pset2.Get(&result2)); | 54 EXPECT_FALSE(pset2.Get(&result2)); |
| 58 | 55 |
| 59 // Test that we can store and retrieve a uint32_t: | 56 // Test that we can store and retrieve a uint32: |
| 60 uint32_t number = 12747; | 57 uint32 number = 12747; |
| 61 ParameterSet pset3 = ParamPickerMake(number); | 58 ParameterSet pset3 = ParamPickerMake(number); |
| 62 EXPECT_FALSE(pset3.Get(&result1)); | 59 EXPECT_FALSE(pset3.Get(&result1)); |
| 63 EXPECT_TRUE(pset3.Get(&result2)); | 60 EXPECT_TRUE(pset3.Get(&result2)); |
| 64 EXPECT_EQ(number, result2); | 61 EXPECT_EQ(number, result2); |
| 65 | 62 |
| 66 // Test that we can store and retrieve a string: | 63 // Test that we can store and retrieve a string: |
| 67 const wchar_t* txt = L"S231L"; | 64 const wchar_t* txt = L"S231L"; |
| 68 ParameterSet pset4 = ParamPickerMake(txt); | 65 ParameterSet pset4 = ParamPickerMake(txt); |
| 69 const wchar_t* result3 = NULL; | 66 const wchar_t* result3 = NULL; |
| 70 EXPECT_TRUE(pset4.Get(&result3)); | 67 EXPECT_TRUE(pset4.Get(&result3)); |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 177 | 174 |
| 178 // There should be no room more another opcode: | 175 // There should be no room more another opcode: |
| 179 PolicyOpcode* op1 = opcode_maker.MakeOpWStringMatch(0, txt2, 0, | 176 PolicyOpcode* op1 = opcode_maker.MakeOpWStringMatch(0, txt2, 0, |
| 180 CASE_SENSITIVE, | 177 CASE_SENSITIVE, |
| 181 kPolNone); | 178 kPolNone); |
| 182 ASSERT_EQ(nullptr, op1); | 179 ASSERT_EQ(nullptr, op1); |
| 183 } | 180 } |
| 184 | 181 |
| 185 TEST(PolicyEngineTest, IntegerOpcodes) { | 182 TEST(PolicyEngineTest, IntegerOpcodes) { |
| 186 const wchar_t* txt = L"abcdef"; | 183 const wchar_t* txt = L"abcdef"; |
| 187 uint32_t num1 = 42; | 184 uint32 num1 = 42; |
| 188 uint32_t num2 = 113377; | 185 uint32 num2 = 113377; |
| 189 | 186 |
| 190 ParameterSet pp_wrong1 = ParamPickerMake(txt); | 187 ParameterSet pp_wrong1 = ParamPickerMake(txt); |
| 191 ParameterSet pp_num1 = ParamPickerMake(num1); | 188 ParameterSet pp_num1 = ParamPickerMake(num1); |
| 192 ParameterSet pp_num2 = ParamPickerMake(num2); | 189 ParameterSet pp_num2 = ParamPickerMake(num2); |
| 193 | 190 |
| 194 char memory[kOpcodeMemory]; | 191 char memory[kOpcodeMemory]; |
| 195 OpcodeFactory opcode_maker(memory, sizeof(memory)); | 192 OpcodeFactory opcode_maker(memory, sizeof(memory)); |
| 196 | 193 |
| 197 // Test basic match for uint32s 42 == 42 and 42 != 113377. | 194 // Test basic match for uint32s 42 == 42 and 42 != 113377. |
| 198 PolicyOpcode* op_m42 = opcode_maker.MakeOpNumberMatch(0, 42UL, kPolNone); | 195 PolicyOpcode* op_m42 = opcode_maker.MakeOpNumberMatch(0, 42UL, kPolNone); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 217 ASSERT_NE(nullptr, op_range1); | 214 ASSERT_NE(nullptr, op_range1); |
| 218 EXPECT_EQ(EVAL_TRUE, op_range1->Evaluate(&pp_num1, 1, NULL)); | 215 EXPECT_EQ(EVAL_TRUE, op_range1->Evaluate(&pp_num1, 1, NULL)); |
| 219 EXPECT_EQ(EVAL_FALSE, op_range1->Evaluate(&pp_num2, 1, NULL)); | 216 EXPECT_EQ(EVAL_FALSE, op_range1->Evaluate(&pp_num2, 1, NULL)); |
| 220 EXPECT_EQ(EVAL_ERROR, op_range1->Evaluate(&pp_wrong1, 1, NULL)); | 217 EXPECT_EQ(EVAL_ERROR, op_range1->Evaluate(&pp_wrong1, 1, NULL)); |
| 221 } | 218 } |
| 222 | 219 |
| 223 TEST(PolicyEngineTest, LogicalOpcodes) { | 220 TEST(PolicyEngineTest, LogicalOpcodes) { |
| 224 char memory[kOpcodeMemory]; | 221 char memory[kOpcodeMemory]; |
| 225 OpcodeFactory opcode_maker(memory, sizeof(memory)); | 222 OpcodeFactory opcode_maker(memory, sizeof(memory)); |
| 226 | 223 |
| 227 uint32_t num1 = 0x10100702; | 224 uint32 num1 = 0x10100702; |
| 228 ParameterSet pp_num1 = ParamPickerMake(num1); | 225 ParameterSet pp_num1 = ParamPickerMake(num1); |
| 229 | 226 |
| 230 PolicyOpcode* op_and1 = | 227 PolicyOpcode* op_and1 = |
| 231 opcode_maker.MakeOpNumberAndMatch(0, 0x00100000, kPolNone); | 228 opcode_maker.MakeOpNumberAndMatch(0, 0x00100000, kPolNone); |
| 232 ASSERT_NE(nullptr, op_and1); | 229 ASSERT_NE(nullptr, op_and1); |
| 233 EXPECT_EQ(EVAL_TRUE, op_and1->Evaluate(&pp_num1, 1, NULL)); | 230 EXPECT_EQ(EVAL_TRUE, op_and1->Evaluate(&pp_num1, 1, NULL)); |
| 234 PolicyOpcode* op_and2 = | 231 PolicyOpcode* op_and2 = |
| 235 opcode_maker.MakeOpNumberAndMatch(0, 0x00000001, kPolNone); | 232 opcode_maker.MakeOpNumberAndMatch(0, 0x00000001, kPolNone); |
| 236 ASSERT_NE(nullptr, op_and2); | 233 ASSERT_NE(nullptr, op_and2); |
| 237 EXPECT_EQ(EVAL_FALSE, op_and2->Evaluate(&pp_num1, 1, NULL)); | 234 EXPECT_EQ(EVAL_FALSE, op_and2->Evaluate(&pp_num1, 1, NULL)); |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 363 void* dummy = NULL; | 360 void* dummy = NULL; |
| 364 ParameterSet ppb1 = ParamPickerMake(dummy); | 361 ParameterSet ppb1 = ParamPickerMake(dummy); |
| 365 | 362 |
| 366 PolicyOpcode* op1 = opcode_maker.MakeOpAction(ASK_BROKER, kPolNone); | 363 PolicyOpcode* op1 = opcode_maker.MakeOpAction(ASK_BROKER, kPolNone); |
| 367 ASSERT_NE(nullptr, op1); | 364 ASSERT_NE(nullptr, op1); |
| 368 EXPECT_TRUE(op1->IsAction()); | 365 EXPECT_TRUE(op1->IsAction()); |
| 369 EXPECT_EQ(ASK_BROKER, op1->Evaluate(&ppb1, 1, &mc1)); | 366 EXPECT_EQ(ASK_BROKER, op1->Evaluate(&ppb1, 1, &mc1)); |
| 370 } | 367 } |
| 371 | 368 |
| 372 } // namespace sandbox | 369 } // namespace sandbox |
| OLD | NEW |