From 5cddac99d0596bfe397d5c9b52debf2814347772 Mon Sep 17 00:00:00 2001 From: "anil.hiranniah" Date: Thu, 6 Jan 2022 14:32:57 +0530 Subject: Fix CLA byte encoded with wrong SM bit As per GP Specification 2.2.0.7: 11.1.4 Class Byte Coding, Secure Messaging bit b3, b4 should be considered only if b7 is equal to 0. Calculation corrected accordingly Bug: 210781080 Test: Test transmit for multiple logical channels(From 1 to 8) Change-Id: I4fb1176c5bfd5426832c3482fa1c8edd5d133ec8 --- src/com/android/se/Channel.java | 2 +- src/com/android/se/internal/Util.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) mode change 100644 => 100755 src/com/android/se/Channel.java diff --git a/src/com/android/se/Channel.java b/src/com/android/se/Channel.java old mode 100644 new mode 100755 index d6df415..33327ed --- a/src/com/android/se/Channel.java +++ b/src/com/android/se/Channel.java @@ -213,7 +213,7 @@ public class Channel implements IBinder.DeathRecipient { cla = (byte) ((cla & 0xBC) | channelNumber); } else if (channelNumber < 20) { // b7 = 1 indicates the further interindustry class byte coding - boolean isSm = (cla & 0x0C) != 0; + boolean isSm = (((cla & 0x40) == 0x00) && ((cla & 0x0C) != 0)); cla = (byte) ((cla & 0xB0) | 0x40 | (channelNumber - 4)); if (isSm) { cla |= 0x20; diff --git a/src/com/android/se/internal/Util.java b/src/com/android/se/internal/Util.java index 8e9cfe3..8a52962 100755 --- a/src/com/android/se/internal/Util.java +++ b/src/com/android/se/internal/Util.java @@ -135,7 +135,7 @@ public class Util { cla = (byte) ((cla & 0xBC) | channelNumber); } else if (channelNumber < 20) { // b7 = 1 indicates the further interindustry class byte coding - boolean isSM = (cla & 0x0C) != 0; + boolean isSM = (((cla & 0x40) == 0x00) && ((cla & 0x0C) != 0)); cla = (byte) ((cla & 0xB0) | 0x40 | (channelNumber - 4)); if (isSM) { cla |= 0x20; -- cgit v1.2.3