Validate the uri received in ApnEditor.
Uri should only refer to telephony carriers and no other provider.
Bug: 11184401
Change-Id: I38c25a37a48883f971c4f405a98db5066a707909
diff --git a/src/com/android/settings/ApnEditor.java b/src/com/android/settings/ApnEditor.java
index 8299c67..1a14ffe 100644
--- a/src/com/android/settings/ApnEditor.java
+++ b/src/com/android/settings/ApnEditor.java
@@ -203,10 +203,22 @@
mFirstTime = icicle == null;
if (action.equals(Intent.ACTION_EDIT)) {
- mUri = intent.getData();
+ Uri uri = intent.getData();
+ if (!uri.isPathPrefixMatch(Telephony.Carriers.CONTENT_URI)) {
+ Log.e(TAG, "Edit request not for carrier table. Uri: " + uri);
+ finish();
+ return;
+ }
+ mUri = uri;
} else if (action.equals(Intent.ACTION_INSERT)) {
if (mFirstTime || icicle.getInt(SAVED_POS) == 0) {
- mUri = getContentResolver().insert(intent.getData(), new ContentValues());
+ Uri uri = intent.getData();
+ if (!uri.isPathPrefixMatch(Telephony.Carriers.CONTENT_URI)) {
+ Log.e(TAG, "Insert request not for carrier table. Uri: " + uri);
+ finish();
+ return;
+ }
+ mUri = getContentResolver().insert(uri, new ContentValues());
} else {
mUri = ContentUris.withAppendedId(Telephony.Carriers.CONTENT_URI,
icicle.getInt(SAVED_POS));