summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Chen Xu <fionaxu@google.com> 2017-06-23 21:43:59 +0000
committer android-build-merger <android-build-merger@google.com> 2017-06-23 21:43:59 +0000
commit95fbd2afef21eb6203f67b31abef3f84702ab6df (patch)
treec83fb3e232d64b438adae77b56f30f2bc138ec68
parentb2f8a670126920b632ef02ad0610a38a67b3ed67 (diff)
parent93ea43386e7da558088c052cfc5aa4195dfd734f (diff)
Merge "Handle invalid destination address gracefully" into oc-dr1-dev
am: 93ea43386e Change-Id: I0e36a295ca481bb5c9b0fc77cb0d2e56d9cbfd0c
-rw-r--r--telephony/java/com/android/internal/telephony/gsm/SmsMessage.java12
1 files changed, 11 insertions, 1 deletions
diff --git a/telephony/java/com/android/internal/telephony/gsm/SmsMessage.java b/telephony/java/com/android/internal/telephony/gsm/SmsMessage.java
index 582506a367d0..d4098d94ba6c 100644
--- a/telephony/java/com/android/internal/telephony/gsm/SmsMessage.java
+++ b/telephony/java/com/android/internal/telephony/gsm/SmsMessage.java
@@ -278,6 +278,10 @@ public class SmsMessage extends SmsMessageBase {
scAddress, destinationAddress, mtiByte,
statusReportRequested, ret);
+ // Skip encoding pdu if error occurs when create pdu head and the error will be handled
+ // properly later on encodedMessage sanity check.
+ if (bo == null) return ret;
+
// User Data (and length)
byte[] userData;
try {
@@ -420,6 +424,9 @@ public class SmsMessage extends SmsMessageBase {
scAddress, destinationAddress, (byte) 0x41, // MTI = SMS-SUBMIT,
// TP-UDHI = true
statusReportRequested, ret);
+ // Skip encoding pdu if error occurs when create pdu head and the error will be handled
+ // properly later on encodedMessage sanity check.
+ if (bo == null) return ret;
// TP-Data-Coding-Scheme
// No class, 8 bit data
@@ -451,7 +458,7 @@ public class SmsMessage extends SmsMessageBase {
* @param destinationAddress the address of the destination for the message
* @param mtiByte
* @param ret <code>SubmitPdu</code> containing the encoded SC
- * address, if applicable, and the encoded message
+ * address, if applicable, and the encoded message. Returns null on encode error.
*/
private static ByteArrayOutputStream getSubmitPduHead(
String scAddress, String destinationAddress, byte mtiByte,
@@ -482,6 +489,9 @@ public class SmsMessage extends SmsMessageBase {
daBytes = PhoneNumberUtils.networkPortionToCalledPartyBCD(destinationAddress);
+ // return empty pduHead for invalid destination address
+ if (daBytes == null) return null;
+
// destination address length in BCD digits, ignoring TON byte and pad
// TODO Should be better.
bo.write((daBytes.length - 1) * 2