summaryrefslogtreecommitdiff
path: root/src/com/android/se/security/AccessRuleCache.java
diff options
context:
space:
mode:
authorPierre-Yves Marche <pierreyves.marche@orange.com>2019-03-01 16:45:03 +0000
committerRuchi Kandoi <kandoiruchi@google.com>2019-03-04 22:32:52 +0000
commitba066c156c8bcc681be77ccc7cd4db8207d2e56e (patch)
tree25d6c0c2feb3bf5ffb6529ee0cc507e270bd71fe /src/com/android/se/security/AccessRuleCache.java
parent34d84d674dc9182e41f103574df937ca0ec6e48d (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.java18
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());