diff options
author | Pierre-Yves Marche <pierreyves.marche@orange.com> | 2019-03-01 16:45:03 +0000 |
---|---|---|
committer | Ruchi Kandoi <kandoiruchi@google.com> | 2019-03-04 22:32:52 +0000 |
commit | ba066c156c8bcc681be77ccc7cd4db8207d2e56e (patch) | |
tree | 25d6c0c2feb3bf5ffb6529ee0cc507e270bd71fe /src/com/android/se/security/AccessRuleCache.java | |
parent | 34d84d674dc9182e41f103574df937ca0ec6e48d (diff) |
Fix mNFCEventAllowed=UNDEFINED
When mNFCEventAllowed=UNDEFINED it must be updated according
to GP in all search rules.
This was already done in A & C but not fixed in B & D.
Test: test transaction Event using CTS SIM
using AID a000000476416e64726f696443545341
Change-Id: I9b6568965403c0f4c60507a3530537ed6284a62c
Diffstat (limited to 'src/com/android/se/security/AccessRuleCache.java')
-rw-r--r-- | src/com/android/se/security/AccessRuleCache.java | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/com/android/se/security/AccessRuleCache.java b/src/com/android/se/security/AccessRuleCache.java index 1a4f2eb..8e93e58 100644 --- a/src/com/android/se/security/AccessRuleCache.java +++ b/src/com/android/se/security/AccessRuleCache.java @@ -310,6 +310,15 @@ public class AccessRuleCache { ref_do = new REF_DO(aid_ref_do, hash_ref_do); if (mRuleCache.containsKey(ref_do)) { + // let's take care about the undefined rules, according to the GP specification: + ChannelAccess ca = mRuleCache.get(ref_do); + if (ca.getApduAccess() == ChannelAccess.ACCESS.UNDEFINED) { + ca.setApduAccess(ChannelAccess.ACCESS.DENIED); + } + if ((ca.getNFCEventAccess() == ChannelAccess.ACCESS.UNDEFINED) + && (ca.getApduAccess() != ChannelAccess.ACCESS.UNDEFINED)) { + ca.setNFCEventAccess(ca.getApduAccess()); + } if (DEBUG) { Log.i(mTag, "findAccessRule() " + ref_do.toString() + ", " + mRuleCache.get(ref_do).toString()); @@ -367,6 +376,15 @@ public class AccessRuleCache { ref_do = new REF_DO(aid_ref_do, hash_ref_do); if (mRuleCache.containsKey(ref_do)) { + // let's take care about the undefined rules, according to the GP specification: + ChannelAccess ca = mRuleCache.get(ref_do); + if (ca.getApduAccess() == ChannelAccess.ACCESS.UNDEFINED) { + ca.setApduAccess(ChannelAccess.ACCESS.DENIED); + } + if ((ca.getNFCEventAccess() == ChannelAccess.ACCESS.UNDEFINED) + && (ca.getApduAccess() != ChannelAccess.ACCESS.UNDEFINED)) { + ca.setNFCEventAccess(ca.getApduAccess()); + } if (DEBUG) { Log.i(mTag, "findAccessRule() " + ref_do.toString() + ", " + mRuleCache.get(ref_do).toString()); |