From 166546c3579b7a9deb413f8e44ad94b8ed41335b Mon Sep 17 00:00:00 2001 From: David Brazdil Date: Mon, 23 Apr 2018 13:50:38 +0100 Subject: 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) --- runtime/hidden_api_test.cc | 51 +++++++++++++++++++++++++--------------------- 1 file changed, 28 insertions(+), 23 deletions(-) (limited to 'runtime/hidden_api_test.cc') 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) { -- cgit v1.2.3-59-g8ed1b