Snap for 9470583 from bce59961b2acb35a34c5a046549d038d5f07222d to tm-qpr3-release
Change-Id: I904bad8f419ba4374f4238276acd18ca05fec235
diff --git a/assets/latest_carrier_id/carrier_list.pb b/assets/latest_carrier_id/carrier_list.pb
index 7c46449..7a7c812 100644
--- a/assets/latest_carrier_id/carrier_list.pb
+++ b/assets/latest_carrier_id/carrier_list.pb
Binary files differ
diff --git a/assets/latest_carrier_id/carrier_list.textpb b/assets/latest_carrier_id/carrier_list.textpb
index 5b521f2..d80a1ae 100644
--- a/assets/latest_carrier_id/carrier_list.textpb
+++ b/assets/latest_carrier_id/carrier_list.textpb
Binary files differ
diff --git a/assets/sdk28_carrier_id/carrier_list.pb b/assets/sdk28_carrier_id/carrier_list.pb
index ff06545..36f0b3d 100644
--- a/assets/sdk28_carrier_id/carrier_list.pb
+++ b/assets/sdk28_carrier_id/carrier_list.pb
Binary files differ
diff --git a/assets/sdk28_carrier_id/carrier_list.textpb b/assets/sdk28_carrier_id/carrier_list.textpb
index 881a66a..9ca54e6 100644
--- a/assets/sdk28_carrier_id/carrier_list.textpb
+++ b/assets/sdk28_carrier_id/carrier_list.textpb
Binary files differ
diff --git a/assets/sdk29_carrier_id/carrier_list.pb b/assets/sdk29_carrier_id/carrier_list.pb
index fd32451..c989c0f 100644
--- a/assets/sdk29_carrier_id/carrier_list.pb
+++ b/assets/sdk29_carrier_id/carrier_list.pb
Binary files differ
diff --git a/assets/sdk29_carrier_id/carrier_list.textpb b/assets/sdk29_carrier_id/carrier_list.textpb
index 4a2a263..d1be30b 100644
--- a/assets/sdk29_carrier_id/carrier_list.textpb
+++ b/assets/sdk29_carrier_id/carrier_list.textpb
Binary files differ
diff --git a/assets/sdk30_carrier_id/carrier_list.pb b/assets/sdk30_carrier_id/carrier_list.pb
index be5d8f5..9cbae5e 100644
--- a/assets/sdk30_carrier_id/carrier_list.pb
+++ b/assets/sdk30_carrier_id/carrier_list.pb
Binary files differ
diff --git a/assets/sdk30_carrier_id/carrier_list.textpb b/assets/sdk30_carrier_id/carrier_list.textpb
index ef71379..8974b10 100644
--- a/assets/sdk30_carrier_id/carrier_list.textpb
+++ b/assets/sdk30_carrier_id/carrier_list.textpb
Binary files differ
diff --git a/assets/sdk31_carrier_id/carrier_list.pb b/assets/sdk31_carrier_id/carrier_list.pb
index 11e2628..6410005 100644
--- a/assets/sdk31_carrier_id/carrier_list.pb
+++ b/assets/sdk31_carrier_id/carrier_list.pb
Binary files differ
diff --git a/assets/sdk31_carrier_id/carrier_list.textpb b/assets/sdk31_carrier_id/carrier_list.textpb
index fe1806f..d799d4b 100644
--- a/assets/sdk31_carrier_id/carrier_list.textpb
+++ b/assets/sdk31_carrier_id/carrier_list.textpb
Binary files differ
diff --git a/src/com/android/providers/telephony/MmsProvider.java b/src/com/android/providers/telephony/MmsProvider.java
index b5f8ce0..5ddd6ac 100644
--- a/src/com/android/providers/telephony/MmsProvider.java
+++ b/src/com/android/providers/telephony/MmsProvider.java
@@ -46,6 +46,7 @@
import android.system.ErrnoException;
import android.system.Os;
import android.text.TextUtils;
+import android.util.EventLog;
import android.util.Log;
import com.google.android.mms.pdu.PduHeaders;
@@ -825,13 +826,21 @@
case MMS_PART_RESET_FILE_PERMISSION:
String path = getContext().getDir(PARTS_DIR_NAME, 0).getPath() + '/' +
uri.getPathSegments().get(1);
- // Reset the file permission back to read for everyone but me.
+
try {
+ String partsDirPath = getContext().getDir(PARTS_DIR_NAME, 0).getCanonicalPath();
+ if (!new File(path).getCanonicalPath().startsWith(partsDirPath)) {
+ EventLog.writeEvent(0x534e4554, "240685104",
+ Binder.getCallingUid(), (TAG + " update: path " + path +
+ " does not start with " + partsDirPath));
+ return 0;
+ }
+ // Reset the file permission back to read for everyone but me.
Os.chmod(path, 0644);
if (LOCAL_LOGV) {
Log.d(TAG, "MmsProvider.update chmod is successful for path: " + path);
}
- } catch (ErrnoException e) {
+ } catch (ErrnoException | IOException e) {
Log.e(TAG, "Exception in chmod: " + e);
}
return 0;
diff --git a/src/com/android/providers/telephony/MmsSmsProvider.java b/src/com/android/providers/telephony/MmsSmsProvider.java
index 76d3b8a..904e2ba 100644
--- a/src/com/android/providers/telephony/MmsSmsProvider.java
+++ b/src/com/android/providers/telephony/MmsSmsProvider.java
@@ -361,8 +361,15 @@
if ((simple != null) && simple.equals("true")) {
String threadType = uri.getQueryParameter("thread_type");
if (!TextUtils.isEmpty(threadType)) {
- selection = concatSelections(
- selection, Threads.TYPE + "=" + threadType);
+ try {
+ Integer.parseInt(threadType);
+ selection = concatSelections(
+ selection, Threads.TYPE + "=" + threadType);
+ } catch (NumberFormatException ex) {
+ Log.e(LOG_TAG, "Thread type must be int");
+ // return empty cursor
+ break;
+ }
}
cursor = getSimpleConversations(
projection, selection, selectionArgs, sortOrder);
@@ -491,9 +498,15 @@
String extraSelection = (proto != -1) ?
(PendingMessages.PROTO_TYPE + "=" + proto) : " 0=0 ";
if (!TextUtils.isEmpty(msgId)) {
- extraSelection += " AND " + PendingMessages.MSG_ID + "=" + msgId;
+ try {
+ Long.parseLong(msgId);
+ extraSelection += " AND " + PendingMessages.MSG_ID + "=" + msgId;
+ } catch(NumberFormatException ex) {
+ Log.e(LOG_TAG, "MSG ID must be a Long.");
+ // return empty cursor
+ break;
+ }
}
-
String finalSelection = TextUtils.isEmpty(selection)
? extraSelection : ("(" + extraSelection + ") AND " + selection);
String finalOrder = TextUtils.isEmpty(sortOrder)
diff --git a/tests/src/com/android/providers/telephony/TelephonyProviderTest.java b/tests/src/com/android/providers/telephony/TelephonyProviderTest.java
index b3892be..d456777 100644
--- a/tests/src/com/android/providers/telephony/TelephonyProviderTest.java
+++ b/tests/src/com/android/providers/telephony/TelephonyProviderTest.java
@@ -48,7 +48,7 @@
import android.test.suitebuilder.annotation.SmallTest;
import android.text.TextUtils;
import android.util.Log;
-
+import com.android.internal.telephony.LocalLog;
import androidx.test.InstrumentationRegistry;
import junit.framework.TestCase;
@@ -64,7 +64,9 @@
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
+import java.lang.reflect.Field;
import java.util.Arrays;
+import java.util.HashMap;
import java.util.List;
import java.util.stream.IntStream;
@@ -358,6 +360,12 @@
notifyChangeRestoreCount = 0;
// Required to access SIMINFO table
mTelephonyProviderTestable.fakeCallingUid(Process.PHONE_UID);
+ // Ignore local log during test
+ Field field = PhoneFactory.class.getDeclaredField("sLocalLogs");
+ field.setAccessible(true);
+ HashMap<String, LocalLog> localLogs = new HashMap<>();
+ localLogs.put("TelephonyProvider", new LocalLog(0));
+ field.set(null, localLogs);
}
private void setUpMockContext(boolean isActiveSubId) {
@@ -1671,7 +1679,6 @@
assertEquals(1, cursor.getCount());
cursor.moveToFirst();
assertEquals(otherName, cursor.getString(0));
- PhoneFactory.addLocalLog("TelephonyProvider", 1);
}
/**