diff options
Diffstat (limited to 'src')
-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()); |