diff options
author | 2018-04-23 13:50:38 +0100 | |
---|---|---|
committer | 2018-05-08 10:32:23 +0100 | |
commit | 166546c3579b7a9deb413f8e44ad94b8ed41335b (patch) | |
tree | 766450bb9576909e925c5e7d5e1b81c25dd05839 /runtime/hidden_api_test.cc | |
parent | 2e6f69c704202d41f0ab5ab0aa65583a26184e51 (diff) |
Fix hidden API flags decoding for intrinsics
Hidden API decision logic would try to decode the access flags of
intrinsics directly, bypassing the override in ArtMethod. This patch
get hidden_api.h to use the same code path.
This also fixes CtsHiddenApiDiscoveryTestCases where the access flags
of blacklisted APIs are tested. VarHandle intrinsics would not pass.
Bug: 64382372
Bug: 72430785
Bug: 78230396
Test: cts-tradefed run cts --module CtsHiddenApiDiscoveryTestCases
Merged-In: I080313dd91bbee2d7d98b00c02e224974b344c01
Change-Id: I080313dd91bbee2d7d98b00c02e224974b344c01
(cherry picked from commit 14c212a44ac9a3ad12025ebf30836129669fa949)
Diffstat (limited to 'runtime/hidden_api_test.cc')
-rw-r--r-- | runtime/hidden_api_test.cc | 51 |
1 files changed, 28 insertions, 23 deletions
diff --git a/runtime/hidden_api_test.cc b/runtime/hidden_api_test.cc index 65d6363bfd..1985c6bb19 100644 --- a/runtime/hidden_api_test.cc +++ b/runtime/hidden_api_test.cc @@ -86,36 +86,41 @@ class HiddenApiTest : public CommonRuntimeTest { }; TEST_F(HiddenApiTest, CheckGetActionFromRuntimeFlags) { - uint32_t whitelist = HiddenApiAccessFlags::EncodeForRuntime(0, HiddenApiAccessFlags::kWhitelist); - uint32_t lightgreylist = - HiddenApiAccessFlags::EncodeForRuntime(0, HiddenApiAccessFlags::kLightGreylist); - uint32_t darkgreylist = - HiddenApiAccessFlags::EncodeForRuntime(0, HiddenApiAccessFlags::kDarkGreylist); - uint32_t blacklist = HiddenApiAccessFlags::EncodeForRuntime(0, HiddenApiAccessFlags::kBlacklist); - runtime_->SetHiddenApiEnforcementPolicy(hiddenapi::EnforcementPolicy::kNoChecks); - ASSERT_EQ(GetActionFromAccessFlags(whitelist), hiddenapi::kAllow); - ASSERT_EQ(GetActionFromAccessFlags(lightgreylist), hiddenapi::kAllow); - ASSERT_EQ(GetActionFromAccessFlags(darkgreylist), hiddenapi::kAllow); - ASSERT_EQ(GetActionFromAccessFlags(blacklist), hiddenapi::kAllow); + ASSERT_EQ(GetActionFromAccessFlags(HiddenApiAccessFlags::kWhitelist), hiddenapi::kAllow); + ASSERT_EQ(GetActionFromAccessFlags(HiddenApiAccessFlags::kLightGreylist), hiddenapi::kAllow); + ASSERT_EQ(GetActionFromAccessFlags(HiddenApiAccessFlags::kDarkGreylist), hiddenapi::kAllow); + ASSERT_EQ(GetActionFromAccessFlags(HiddenApiAccessFlags::kBlacklist), hiddenapi::kAllow); runtime_->SetHiddenApiEnforcementPolicy(hiddenapi::EnforcementPolicy::kJustWarn); - ASSERT_EQ(GetActionFromAccessFlags(whitelist), hiddenapi::kAllow); - ASSERT_EQ(GetActionFromAccessFlags(lightgreylist), hiddenapi::kAllowButWarn); - ASSERT_EQ(GetActionFromAccessFlags(darkgreylist), hiddenapi::kAllowButWarn); - ASSERT_EQ(GetActionFromAccessFlags(blacklist), hiddenapi::kAllowButWarn); + ASSERT_EQ(GetActionFromAccessFlags(HiddenApiAccessFlags::kWhitelist), + hiddenapi::kAllow); + ASSERT_EQ(GetActionFromAccessFlags(HiddenApiAccessFlags::kLightGreylist), + hiddenapi::kAllowButWarn); + ASSERT_EQ(GetActionFromAccessFlags(HiddenApiAccessFlags::kDarkGreylist), + hiddenapi::kAllowButWarn); + ASSERT_EQ(GetActionFromAccessFlags(HiddenApiAccessFlags::kBlacklist), + hiddenapi::kAllowButWarn); runtime_->SetHiddenApiEnforcementPolicy(hiddenapi::EnforcementPolicy::kDarkGreyAndBlackList); - ASSERT_EQ(GetActionFromAccessFlags(whitelist), hiddenapi::kAllow); - ASSERT_EQ(GetActionFromAccessFlags(lightgreylist), hiddenapi::kAllowButWarn); - ASSERT_EQ(GetActionFromAccessFlags(darkgreylist), hiddenapi::kDeny); - ASSERT_EQ(GetActionFromAccessFlags(blacklist), hiddenapi::kDeny); + ASSERT_EQ(GetActionFromAccessFlags(HiddenApiAccessFlags::kWhitelist), + hiddenapi::kAllow); + ASSERT_EQ(GetActionFromAccessFlags(HiddenApiAccessFlags::kLightGreylist), + hiddenapi::kAllowButWarn); + ASSERT_EQ(GetActionFromAccessFlags(HiddenApiAccessFlags::kDarkGreylist), + hiddenapi::kDeny); + ASSERT_EQ(GetActionFromAccessFlags(HiddenApiAccessFlags::kBlacklist), + hiddenapi::kDeny); runtime_->SetHiddenApiEnforcementPolicy(hiddenapi::EnforcementPolicy::kBlacklistOnly); - ASSERT_EQ(GetActionFromAccessFlags(whitelist), hiddenapi::kAllow); - ASSERT_EQ(GetActionFromAccessFlags(lightgreylist), hiddenapi::kAllowButWarn); - ASSERT_EQ(GetActionFromAccessFlags(darkgreylist), hiddenapi::kAllowButWarnAndToast); - ASSERT_EQ(GetActionFromAccessFlags(blacklist), hiddenapi::kDeny); + ASSERT_EQ(GetActionFromAccessFlags(HiddenApiAccessFlags::kWhitelist), + hiddenapi::kAllow); + ASSERT_EQ(GetActionFromAccessFlags(HiddenApiAccessFlags::kLightGreylist), + hiddenapi::kAllowButWarn); + ASSERT_EQ(GetActionFromAccessFlags(HiddenApiAccessFlags::kDarkGreylist), + hiddenapi::kAllowButWarnAndToast); + ASSERT_EQ(GetActionFromAccessFlags(HiddenApiAccessFlags::kBlacklist), + hiddenapi::kDeny); } TEST_F(HiddenApiTest, CheckMembersRead) { |