Loading src/java/com/android/internal/telephony/RIL.java +30 −1 Original line number Diff line number Diff line Loading @@ -86,6 +86,8 @@ import android.util.Log; import android.util.SparseArray; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.telephony.cat.ComprehensionTlv; import com.android.internal.telephony.cat.ComprehensionTlvTag; import com.android.internal.telephony.cdma.CdmaInformationRecords; import com.android.internal.telephony.cdma.CdmaSmsBroadcastConfigInfo; import com.android.internal.telephony.dataconnection.DataCallResponse; Loading Loading @@ -2035,7 +2037,7 @@ public class RIL extends BaseCommands implements CommandsInterface { if (RILJ_LOGD) { riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) + " contents = " + contents); + (Build.IS_DEBUGGABLE ? contents : censoredTerminalResponse(contents))); } try { Loading @@ -2047,6 +2049,33 @@ public class RIL extends BaseCommands implements CommandsInterface { } } private String censoredTerminalResponse(String terminalResponse) { try { byte[] bytes = IccUtils.hexStringToBytes(terminalResponse); if (bytes != null) { List<ComprehensionTlv> ctlvs = ComprehensionTlv.decodeMany(bytes, 0); int from = 0; for (ComprehensionTlv ctlv : ctlvs) { // Find text strings which might be personal information input by user, // then replace it with "********". if (ComprehensionTlvTag.TEXT_STRING.value() == ctlv.getTag()) { byte[] target = Arrays.copyOfRange(ctlv.getRawValue(), from, ctlv.getValueIndex() + ctlv.getLength()); terminalResponse = terminalResponse.toLowerCase().replace( IccUtils.bytesToHexString(target), "********"); } // The text string tag and the length field should also be hidden. from = ctlv.getValueIndex() + ctlv.getLength(); } } } catch (Exception e) { Rlog.e(RILJ_LOG_TAG, "Could not censor the terminal response: " + e); terminalResponse = null; } return terminalResponse; } @Override public void sendEnvelopeWithStatus(String contents, Message result) { IRadio radioProxy = getRadioProxy(result); Loading src/java/com/android/internal/telephony/cat/ComprehensionTlv.java +1 −1 Original line number Diff line number Diff line Loading @@ -29,7 +29,7 @@ import java.util.List; * * {@hide} */ class ComprehensionTlv { public class ComprehensionTlv { private static final String LOG_TAG = "ComprehensionTlv"; private int mTag; private boolean mCr; Loading Loading
src/java/com/android/internal/telephony/RIL.java +30 −1 Original line number Diff line number Diff line Loading @@ -86,6 +86,8 @@ import android.util.Log; import android.util.SparseArray; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.telephony.cat.ComprehensionTlv; import com.android.internal.telephony.cat.ComprehensionTlvTag; import com.android.internal.telephony.cdma.CdmaInformationRecords; import com.android.internal.telephony.cdma.CdmaSmsBroadcastConfigInfo; import com.android.internal.telephony.dataconnection.DataCallResponse; Loading Loading @@ -2035,7 +2037,7 @@ public class RIL extends BaseCommands implements CommandsInterface { if (RILJ_LOGD) { riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) + " contents = " + contents); + (Build.IS_DEBUGGABLE ? contents : censoredTerminalResponse(contents))); } try { Loading @@ -2047,6 +2049,33 @@ public class RIL extends BaseCommands implements CommandsInterface { } } private String censoredTerminalResponse(String terminalResponse) { try { byte[] bytes = IccUtils.hexStringToBytes(terminalResponse); if (bytes != null) { List<ComprehensionTlv> ctlvs = ComprehensionTlv.decodeMany(bytes, 0); int from = 0; for (ComprehensionTlv ctlv : ctlvs) { // Find text strings which might be personal information input by user, // then replace it with "********". if (ComprehensionTlvTag.TEXT_STRING.value() == ctlv.getTag()) { byte[] target = Arrays.copyOfRange(ctlv.getRawValue(), from, ctlv.getValueIndex() + ctlv.getLength()); terminalResponse = terminalResponse.toLowerCase().replace( IccUtils.bytesToHexString(target), "********"); } // The text string tag and the length field should also be hidden. from = ctlv.getValueIndex() + ctlv.getLength(); } } } catch (Exception e) { Rlog.e(RILJ_LOG_TAG, "Could not censor the terminal response: " + e); terminalResponse = null; } return terminalResponse; } @Override public void sendEnvelopeWithStatus(String contents, Message result) { IRadio radioProxy = getRadioProxy(result); Loading
src/java/com/android/internal/telephony/cat/ComprehensionTlv.java +1 −1 Original line number Diff line number Diff line Loading @@ -29,7 +29,7 @@ import java.util.List; * * {@hide} */ class ComprehensionTlv { public class ComprehensionTlv { private static final String LOG_TAG = "ComprehensionTlv"; private int mTag; private boolean mCr; Loading