| 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 "sandbox/src/policy_engine_params.h" | 5 #include "sandbox/src/policy_engine_params.h" |
| 6 #include "sandbox/src/policy_engine_processor.h" | 6 #include "sandbox/src/policy_engine_processor.h" |
| 7 #include "sandbox/src/policy_low_level.h" | 7 #include "sandbox/src/policy_low_level.h" |
| 8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
| 9 | 9 |
| 10 #define POLPARAMS_BEGIN(x) sandbox::ParameterSet x[] = { | 10 #define POLPARAMS_BEGIN(x) sandbox::ParameterSet x[] = { |
| 11 #define POLPARAM(p) sandbox::ParamPickerMake(p), | 11 #define POLPARAM(p) sandbox::ParamPickerMake(p), |
| 12 #define POLPARAMS_END } | 12 #define POLPARAMS_END } |
| 13 | 13 |
| 14 namespace sandbox { | 14 namespace sandbox { |
| 15 | 15 |
| 16 bool SetupNtdllImports(); |
| 17 |
| 16 // Testing that we allow opcode generation on valid string patterns. | 18 // Testing that we allow opcode generation on valid string patterns. |
| 17 TEST(PolicyEngineTest, StringPatternsOK) { | 19 TEST(PolicyEngineTest, StringPatternsOK) { |
| 20 SetupNtdllImports(); |
| 18 PolicyRule pr(ASK_BROKER); | 21 PolicyRule pr(ASK_BROKER); |
| 19 EXPECT_TRUE(pr.AddStringMatch(IF, 0, L"c:\\adobe\\ver??\\", CASE_SENSITIVE)); | 22 EXPECT_TRUE(pr.AddStringMatch(IF, 0, L"c:\\adobe\\ver??\\", CASE_SENSITIVE)); |
| 20 EXPECT_TRUE(pr.AddStringMatch(IF, 0, L"*.tmp", CASE_SENSITIVE)); | 23 EXPECT_TRUE(pr.AddStringMatch(IF, 0, L"*.tmp", CASE_SENSITIVE)); |
| 21 EXPECT_TRUE(pr.AddStringMatch(IF, 0, L"c:\\*.doc", CASE_SENSITIVE)); | 24 EXPECT_TRUE(pr.AddStringMatch(IF, 0, L"c:\\*.doc", CASE_SENSITIVE)); |
| 22 EXPECT_TRUE(pr.AddStringMatch(IF, 0, L"c:\\windows\\*", CASE_SENSITIVE)); | 25 EXPECT_TRUE(pr.AddStringMatch(IF, 0, L"c:\\windows\\*", CASE_SENSITIVE)); |
| 23 EXPECT_TRUE(pr.AddStringMatch(IF, 0, L"d:\\adobe\\acrobat.exe", | 26 EXPECT_TRUE(pr.AddStringMatch(IF, 0, L"d:\\adobe\\acrobat.exe", |
| 24 CASE_SENSITIVE)); | 27 CASE_SENSITIVE)); |
| 25 } | 28 } |
| 26 | 29 |
| 27 // Testing that we signal invalid string patterns. | 30 // Testing that we signal invalid string patterns. |
| 28 TEST(PolicyEngineTest, StringPatternsBAD) { | 31 TEST(PolicyEngineTest, StringPatternsBAD) { |
| 32 SetupNtdllImports(); |
| 29 PolicyRule pr(ASK_BROKER); | 33 PolicyRule pr(ASK_BROKER); |
| 30 EXPECT_FALSE(pr.AddStringMatch(IF, 0, L"one**two", CASE_SENSITIVE)); | 34 EXPECT_FALSE(pr.AddStringMatch(IF, 0, L"one**two", CASE_SENSITIVE)); |
| 31 EXPECT_FALSE(pr.AddStringMatch(IF, 0, L"**three", CASE_SENSITIVE)); | 35 EXPECT_FALSE(pr.AddStringMatch(IF, 0, L"**three", CASE_SENSITIVE)); |
| 32 EXPECT_FALSE(pr.AddStringMatch(IF, 0, L"five?six*?seven", CASE_SENSITIVE)); | 36 EXPECT_FALSE(pr.AddStringMatch(IF, 0, L"five?six*?seven", CASE_SENSITIVE)); |
| 33 EXPECT_FALSE(pr.AddStringMatch(IF, 0, L"eight?*nine", CASE_SENSITIVE)); | 37 EXPECT_FALSE(pr.AddStringMatch(IF, 0, L"eight?*nine", CASE_SENSITIVE)); |
| 34 } | 38 } |
| 35 | 39 |
| 36 // Helper function to allocate space (on the heap) for policy. | 40 // Helper function to allocate space (on the heap) for policy. |
| 37 PolicyGlobal* MakePolicyMemory() { | 41 PolicyGlobal* MakePolicyMemory() { |
| 38 const size_t kTotalPolicySz = 4096*8; | 42 const size_t kTotalPolicySz = 4096*8; |
| 39 char* mem = new char[kTotalPolicySz]; | 43 char* mem = new char[kTotalPolicySz]; |
| 40 memset(mem, 0, kTotalPolicySz); | 44 memset(mem, 0, kTotalPolicySz); |
| 41 PolicyGlobal* policy = reinterpret_cast<PolicyGlobal*>(mem); | 45 PolicyGlobal* policy = reinterpret_cast<PolicyGlobal*>(mem); |
| 42 policy->data_size = kTotalPolicySz - sizeof(PolicyGlobal); | 46 policy->data_size = kTotalPolicySz - sizeof(PolicyGlobal); |
| 43 return policy; | 47 return policy; |
| 44 } | 48 } |
| 45 | 49 |
| 46 // The simplest test using LowLevelPolicy it should test a single opcode which | 50 // The simplest test using LowLevelPolicy it should test a single opcode which |
| 47 // does a exact string comparison. | 51 // does a exact string comparison. |
| 48 TEST(PolicyEngineTest, SimpleStrMatch) { | 52 TEST(PolicyEngineTest, SimpleStrMatch) { |
| 53 SetupNtdllImports(); |
| 49 PolicyRule pr(ASK_BROKER); | 54 PolicyRule pr(ASK_BROKER); |
| 50 EXPECT_TRUE(pr.AddStringMatch(IF, 0, L"z:\\Directory\\domo.txt", | 55 EXPECT_TRUE(pr.AddStringMatch(IF, 0, L"z:\\Directory\\domo.txt", |
| 51 CASE_INSENSITIVE)); | 56 CASE_INSENSITIVE)); |
| 52 | 57 |
| 53 PolicyGlobal* policy = MakePolicyMemory(); | 58 PolicyGlobal* policy = MakePolicyMemory(); |
| 54 const uint32 kFakeService = 2; | 59 const uint32 kFakeService = 2; |
| 55 | 60 |
| 56 LowLevelPolicy policyGen(policy); | 61 LowLevelPolicy policyGen(policy); |
| 57 EXPECT_TRUE(policyGen.AddRule(kFakeService, &pr)); | 62 EXPECT_TRUE(policyGen.AddRule(kFakeService, &pr)); |
| 58 EXPECT_TRUE(policyGen.Done()); | 63 EXPECT_TRUE(policyGen.Done()); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 71 EXPECT_EQ(ASK_BROKER, pol_ev.GetAction()); | 76 EXPECT_EQ(ASK_BROKER, pol_ev.GetAction()); |
| 72 | 77 |
| 73 filename = L"Z:\\Directory\\domo.txt.tmp"; | 78 filename = L"Z:\\Directory\\domo.txt.tmp"; |
| 74 result = pol_ev.Evaluate(kShortEval, eval_params, _countof(eval_params)); | 79 result = pol_ev.Evaluate(kShortEval, eval_params, _countof(eval_params)); |
| 75 EXPECT_EQ(NO_POLICY_MATCH, result); | 80 EXPECT_EQ(NO_POLICY_MATCH, result); |
| 76 | 81 |
| 77 delete [] reinterpret_cast<char*>(policy); | 82 delete [] reinterpret_cast<char*>(policy); |
| 78 } | 83 } |
| 79 | 84 |
| 80 TEST(PolicyEngineTest, SimpleIfNotStrMatch) { | 85 TEST(PolicyEngineTest, SimpleIfNotStrMatch) { |
| 86 SetupNtdllImports(); |
| 81 PolicyRule pr(ASK_BROKER); | 87 PolicyRule pr(ASK_BROKER); |
| 82 EXPECT_TRUE(pr.AddStringMatch(IF_NOT, 0, L"c:\\Microsoft\\", | 88 EXPECT_TRUE(pr.AddStringMatch(IF_NOT, 0, L"c:\\Microsoft\\", |
| 83 CASE_SENSITIVE)); | 89 CASE_SENSITIVE)); |
| 84 | 90 |
| 85 PolicyGlobal* policy = MakePolicyMemory(); | 91 PolicyGlobal* policy = MakePolicyMemory(); |
| 86 const uint32 kFakeService = 2; | 92 const uint32 kFakeService = 2; |
| 87 LowLevelPolicy policyGen(policy); | 93 LowLevelPolicy policyGen(policy); |
| 88 | 94 |
| 89 EXPECT_TRUE(policyGen.AddRule(kFakeService, &pr)); | 95 EXPECT_TRUE(policyGen.AddRule(kFakeService, &pr)); |
| 90 EXPECT_TRUE(policyGen.Done()); | 96 EXPECT_TRUE(policyGen.Done()); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 108 | 114 |
| 109 filename = L"c:\\Microsoft\\domo.txt"; | 115 filename = L"c:\\Microsoft\\domo.txt"; |
| 110 result = pol_ev.Evaluate(kShortEval, eval_params, _countof(eval_params)); | 116 result = pol_ev.Evaluate(kShortEval, eval_params, _countof(eval_params)); |
| 111 EXPECT_EQ(POLICY_MATCH, result); | 117 EXPECT_EQ(POLICY_MATCH, result); |
| 112 EXPECT_EQ(ASK_BROKER, pol_ev.GetAction()); | 118 EXPECT_EQ(ASK_BROKER, pol_ev.GetAction()); |
| 113 | 119 |
| 114 delete [] reinterpret_cast<char*>(policy); | 120 delete [] reinterpret_cast<char*>(policy); |
| 115 } | 121 } |
| 116 | 122 |
| 117 TEST(PolicyEngineTest, SimpleIfNotStrMatchWild1) { | 123 TEST(PolicyEngineTest, SimpleIfNotStrMatchWild1) { |
| 124 SetupNtdllImports(); |
| 118 PolicyRule pr(ASK_BROKER); | 125 PolicyRule pr(ASK_BROKER); |
| 119 EXPECT_TRUE(pr.AddStringMatch(IF_NOT, 0, L"c:\\Microsoft\\*", | 126 EXPECT_TRUE(pr.AddStringMatch(IF_NOT, 0, L"c:\\Microsoft\\*", |
| 120 CASE_SENSITIVE)); | 127 CASE_SENSITIVE)); |
| 121 | 128 |
| 122 PolicyGlobal* policy = MakePolicyMemory(); | 129 PolicyGlobal* policy = MakePolicyMemory(); |
| 123 const uint32 kFakeService = 3; | 130 const uint32 kFakeService = 3; |
| 124 LowLevelPolicy policyGen(policy); | 131 LowLevelPolicy policyGen(policy); |
| 125 | 132 |
| 126 EXPECT_TRUE(policyGen.AddRule(kFakeService, &pr)); | 133 EXPECT_TRUE(policyGen.AddRule(kFakeService, &pr)); |
| 127 EXPECT_TRUE(policyGen.Done()); | 134 EXPECT_TRUE(policyGen.Done()); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 140 | 147 |
| 141 filename = L"c:\\MicroNerd\\domo.txt"; | 148 filename = L"c:\\MicroNerd\\domo.txt"; |
| 142 result = pol_ev.Evaluate(kShortEval, eval_params, _countof(eval_params)); | 149 result = pol_ev.Evaluate(kShortEval, eval_params, _countof(eval_params)); |
| 143 EXPECT_EQ(POLICY_MATCH, result); | 150 EXPECT_EQ(POLICY_MATCH, result); |
| 144 EXPECT_EQ(ASK_BROKER, pol_ev.GetAction()); | 151 EXPECT_EQ(ASK_BROKER, pol_ev.GetAction()); |
| 145 | 152 |
| 146 delete [] reinterpret_cast<char*>(policy); | 153 delete [] reinterpret_cast<char*>(policy); |
| 147 } | 154 } |
| 148 | 155 |
| 149 TEST(PolicyEngineTest, SimpleIfNotStrMatchWild2) { | 156 TEST(PolicyEngineTest, SimpleIfNotStrMatchWild2) { |
| 157 SetupNtdllImports(); |
| 150 PolicyRule pr(ASK_BROKER); | 158 PolicyRule pr(ASK_BROKER); |
| 151 EXPECT_TRUE(pr.AddStringMatch(IF_NOT, 0, L"c:\\Microsoft\\*.txt", | 159 EXPECT_TRUE(pr.AddStringMatch(IF_NOT, 0, L"c:\\Microsoft\\*.txt", |
| 152 CASE_SENSITIVE)); | 160 CASE_SENSITIVE)); |
| 153 | 161 |
| 154 PolicyGlobal* policy = MakePolicyMemory(); | 162 PolicyGlobal* policy = MakePolicyMemory(); |
| 155 const uint32 kFakeService = 3; | 163 const uint32 kFakeService = 3; |
| 156 LowLevelPolicy policyGen(policy); | 164 LowLevelPolicy policyGen(policy); |
| 157 | 165 |
| 158 EXPECT_TRUE(policyGen.AddRule(kFakeService, &pr)); | 166 EXPECT_TRUE(policyGen.AddRule(kFakeService, &pr)); |
| 159 EXPECT_TRUE(policyGen.Done()); | 167 EXPECT_TRUE(policyGen.Done()); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 177 | 185 |
| 178 filename = L"c:\\Microsoft\\domo.bmp"; | 186 filename = L"c:\\Microsoft\\domo.bmp"; |
| 179 result = pol_ev.Evaluate(kShortEval, eval_params, _countof(eval_params)); | 187 result = pol_ev.Evaluate(kShortEval, eval_params, _countof(eval_params)); |
| 180 EXPECT_EQ(POLICY_MATCH, result); | 188 EXPECT_EQ(POLICY_MATCH, result); |
| 181 EXPECT_EQ(ASK_BROKER, pol_ev.GetAction()); | 189 EXPECT_EQ(ASK_BROKER, pol_ev.GetAction()); |
| 182 | 190 |
| 183 delete [] reinterpret_cast<char*>(policy); | 191 delete [] reinterpret_cast<char*>(policy); |
| 184 } | 192 } |
| 185 | 193 |
| 186 TEST(PolicyEngineTest, IfNotStrMatchTwoRulesWild1) { | 194 TEST(PolicyEngineTest, IfNotStrMatchTwoRulesWild1) { |
| 195 SetupNtdllImports(); |
| 187 PolicyRule pr(ASK_BROKER); | 196 PolicyRule pr(ASK_BROKER); |
| 188 EXPECT_TRUE(pr.AddStringMatch(IF_NOT, 0, L"c:\\Microsoft\\*", | 197 EXPECT_TRUE(pr.AddStringMatch(IF_NOT, 0, L"c:\\Microsoft\\*", |
| 189 CASE_SENSITIVE)); | 198 CASE_SENSITIVE)); |
| 190 EXPECT_TRUE(pr.AddNumberMatch(IF, 1, 24, EQUAL)); | 199 EXPECT_TRUE(pr.AddNumberMatch(IF, 1, 24, EQUAL)); |
| 191 | 200 |
| 192 PolicyGlobal* policy = MakePolicyMemory(); | 201 PolicyGlobal* policy = MakePolicyMemory(); |
| 193 const uint32 kFakeService = 3; | 202 const uint32 kFakeService = 3; |
| 194 LowLevelPolicy policyGen(policy); | 203 LowLevelPolicy policyGen(policy); |
| 195 | 204 |
| 196 EXPECT_TRUE(policyGen.AddRule(kFakeService, &pr)); | 205 EXPECT_TRUE(policyGen.AddRule(kFakeService, &pr)); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 224 | 233 |
| 225 filename = L"c:\\Micronesia\\domo.txt"; | 234 filename = L"c:\\Micronesia\\domo.txt"; |
| 226 access = 42; | 235 access = 42; |
| 227 result = pol_ev.Evaluate(kShortEval, eval_params, _countof(eval_params)); | 236 result = pol_ev.Evaluate(kShortEval, eval_params, _countof(eval_params)); |
| 228 EXPECT_EQ(NO_POLICY_MATCH, result); | 237 EXPECT_EQ(NO_POLICY_MATCH, result); |
| 229 | 238 |
| 230 delete [] reinterpret_cast<char*>(policy); | 239 delete [] reinterpret_cast<char*>(policy); |
| 231 } | 240 } |
| 232 | 241 |
| 233 TEST(PolicyEngineTest, IfNotStrMatchTwoRulesWild2) { | 242 TEST(PolicyEngineTest, IfNotStrMatchTwoRulesWild2) { |
| 243 SetupNtdllImports(); |
| 234 PolicyRule pr(ASK_BROKER); | 244 PolicyRule pr(ASK_BROKER); |
| 235 EXPECT_TRUE(pr.AddNumberMatch(IF, 1, 24, EQUAL)); | 245 EXPECT_TRUE(pr.AddNumberMatch(IF, 1, 24, EQUAL)); |
| 236 EXPECT_TRUE(pr.AddStringMatch(IF_NOT, 0, L"c:\\GoogleV?\\*.txt", | 246 EXPECT_TRUE(pr.AddStringMatch(IF_NOT, 0, L"c:\\GoogleV?\\*.txt", |
| 237 CASE_SENSITIVE)); | 247 CASE_SENSITIVE)); |
| 238 EXPECT_TRUE(pr.AddNumberMatch(IF, 2, 66, EQUAL)); | 248 EXPECT_TRUE(pr.AddNumberMatch(IF, 2, 66, EQUAL)); |
| 239 | 249 |
| 240 PolicyGlobal* policy = MakePolicyMemory(); | 250 PolicyGlobal* policy = MakePolicyMemory(); |
| 241 const uint32 kFakeService = 3; | 251 const uint32 kFakeService = 3; |
| 242 LowLevelPolicy policyGen(policy); | 252 LowLevelPolicy policyGen(policy); |
| 243 | 253 |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 296 sharing = 0; | 306 sharing = 0; |
| 297 result = pol_ev.Evaluate(kShortEval, eval_params, _countof(eval_params)); | 307 result = pol_ev.Evaluate(kShortEval, eval_params, _countof(eval_params)); |
| 298 EXPECT_EQ(NO_POLICY_MATCH, result); | 308 EXPECT_EQ(NO_POLICY_MATCH, result); |
| 299 | 309 |
| 300 delete [] reinterpret_cast<char*>(policy); | 310 delete [] reinterpret_cast<char*>(policy); |
| 301 } | 311 } |
| 302 | 312 |
| 303 // Testing one single rule in one single service. The service is made to | 313 // Testing one single rule in one single service. The service is made to |
| 304 // resemble NtCreateFile. | 314 // resemble NtCreateFile. |
| 305 TEST(PolicyEngineTest, OneRuleTest) { | 315 TEST(PolicyEngineTest, OneRuleTest) { |
| 316 SetupNtdllImports(); |
| 306 PolicyRule pr(ASK_BROKER); | 317 PolicyRule pr(ASK_BROKER); |
| 307 EXPECT_TRUE(pr.AddStringMatch(IF, 0, L"c:\\*Microsoft*\\*.txt", | 318 EXPECT_TRUE(pr.AddStringMatch(IF, 0, L"c:\\*Microsoft*\\*.txt", |
| 308 CASE_SENSITIVE)); | 319 CASE_SENSITIVE)); |
| 309 EXPECT_TRUE(pr.AddNumberMatch(IF_NOT, 1, CREATE_ALWAYS, EQUAL)); | 320 EXPECT_TRUE(pr.AddNumberMatch(IF_NOT, 1, CREATE_ALWAYS, EQUAL)); |
| 310 EXPECT_TRUE(pr.AddNumberMatch(IF, 2, FILE_ATTRIBUTE_NORMAL, EQUAL)); | 321 EXPECT_TRUE(pr.AddNumberMatch(IF, 2, FILE_ATTRIBUTE_NORMAL, EQUAL)); |
| 311 | 322 |
| 312 PolicyGlobal* policy = MakePolicyMemory(); | 323 PolicyGlobal* policy = MakePolicyMemory(); |
| 313 | 324 |
| 314 const uint32 kNtFakeCreateFile = 7; | 325 const uint32 kNtFakeCreateFile = 7; |
| 315 | 326 |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 366 | 377 |
| 367 filename = L"c:\\Microsoft\\1.ttt"; | 378 filename = L"c:\\Microsoft\\1.ttt"; |
| 368 result = pol_ev.Evaluate(kShortEval, eval_params, _countof(eval_params)); | 379 result = pol_ev.Evaluate(kShortEval, eval_params, _countof(eval_params)); |
| 369 EXPECT_EQ(NO_POLICY_MATCH, result); | 380 EXPECT_EQ(NO_POLICY_MATCH, result); |
| 370 | 381 |
| 371 delete [] reinterpret_cast<char*>(policy); | 382 delete [] reinterpret_cast<char*>(policy); |
| 372 } | 383 } |
| 373 | 384 |
| 374 // Testing 3 rules in 3 services. Two of the services resemble File services. | 385 // Testing 3 rules in 3 services. Two of the services resemble File services. |
| 375 TEST(PolicyEngineTest, ThreeRulesTest) { | 386 TEST(PolicyEngineTest, ThreeRulesTest) { |
| 387 SetupNtdllImports(); |
| 376 PolicyRule pr_pipe(FAKE_SUCCESS); | 388 PolicyRule pr_pipe(FAKE_SUCCESS); |
| 377 EXPECT_TRUE(pr_pipe.AddStringMatch(IF, 0, L"\\\\/?/?\\Pipe\\Chrome.*", | 389 EXPECT_TRUE(pr_pipe.AddStringMatch(IF, 0, L"\\\\/?/?\\Pipe\\Chrome.*", |
| 378 CASE_INSENSITIVE)); | 390 CASE_INSENSITIVE)); |
| 379 EXPECT_TRUE(pr_pipe.AddNumberMatch(IF, 1, OPEN_EXISTING, EQUAL)); | 391 EXPECT_TRUE(pr_pipe.AddNumberMatch(IF, 1, OPEN_EXISTING, EQUAL)); |
| 380 EXPECT_TRUE(pr_pipe.AddNumberMatch(IF, 2, FILE_ATTRIBUTE_NORMAL, EQUAL)); | 392 EXPECT_TRUE(pr_pipe.AddNumberMatch(IF, 2, FILE_ATTRIBUTE_NORMAL, EQUAL)); |
| 381 | 393 |
| 382 size_t opc1 = pr_pipe.GetOpcodeCount(); | 394 size_t opc1 = pr_pipe.GetOpcodeCount(); |
| 383 EXPECT_EQ(3, opc1); | 395 EXPECT_EQ(3, opc1); |
| 384 | 396 |
| 385 PolicyRule pr_dump(ASK_BROKER); | 397 PolicyRule pr_dump(ASK_BROKER); |
| (...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 554 result = eval_None.Evaluate(kShortEval, params, _countof(params)); | 566 result = eval_None.Evaluate(kShortEval, params, _countof(params)); |
| 555 EXPECT_EQ(NO_POLICY_MATCH, result); | 567 EXPECT_EQ(NO_POLICY_MATCH, result); |
| 556 result = eval_OpenFile.Evaluate(kShortEval, params, _countof(params)); | 568 result = eval_OpenFile.Evaluate(kShortEval, params, _countof(params)); |
| 557 EXPECT_EQ(POLICY_MATCH, result); | 569 EXPECT_EQ(POLICY_MATCH, result); |
| 558 EXPECT_EQ(FAKE_SUCCESS, eval_OpenFile.GetAction()); | 570 EXPECT_EQ(FAKE_SUCCESS, eval_OpenFile.GetAction()); |
| 559 | 571 |
| 560 delete [] reinterpret_cast<char*>(policy); | 572 delete [] reinterpret_cast<char*>(policy); |
| 561 } | 573 } |
| 562 | 574 |
| 563 } // namespace sandbox | 575 } // namespace sandbox |
| OLD | NEW |