From af9eb2d7a7bcdb0b4e99aa59b863e317e61a5e60 Mon Sep 17 00:00:00 2001 From: Raff Tsai Date: Mon, 1 Oct 2018 18:34:22 +0800 Subject: [PATCH] Application accepts null intents causing a crash Change-Id: Ia7f98f43567f25ae7abc6e5ac7e07323e75d9047 Fixes: 116869239 Test: adb shell am start -n com.android.settings/com.android.settings.Settings\\\$ApnEditorActivity Test: make RunSettingsRoboTests ROBOTEST_FILTER="com.android.settings.network" --- src/com/android/settings/network/ApnEditor.java | 6 +++++- .../com/android/settings/network/ApnEditorTest.java | 11 +++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/network/ApnEditor.java b/src/com/android/settings/network/ApnEditor.java index 6b99e1ffeab..633fc45cb3c 100644 --- a/src/com/android/settings/network/ApnEditor.java +++ b/src/com/android/settings/network/ApnEditor.java @@ -231,9 +231,13 @@ public class ApnEditor extends SettingsPreferenceFragment final Intent intent = getIntent(); final String action = intent.getAction(); + if (TextUtils.isEmpty(action)) { + finish(); + return; + } + mSubId = intent.getIntExtra(ApnSettings.SUB_ID, SubscriptionManager.INVALID_SUBSCRIPTION_ID); - mReadOnlyApn = false; mReadOnlyApnTypes = null; mReadOnlyApnFields = null; diff --git a/tests/robotests/src/com/android/settings/network/ApnEditorTest.java b/tests/robotests/src/com/android/settings/network/ApnEditorTest.java index cc480c373e7..b6242c38ec7 100644 --- a/tests/robotests/src/com/android/settings/network/ApnEditorTest.java +++ b/tests/robotests/src/com/android/settings/network/ApnEditorTest.java @@ -19,11 +19,13 @@ package com.android.settings.network; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; import android.content.ContentResolver; import android.content.ContentValues; @@ -450,6 +452,15 @@ public class ApnEditorTest { assertThat(ApnEditor.formatInteger("not an int")).isEqualTo("not an int"); } + @Test + public void onCreate_noAction_shouldFinishAndNoCrash() { + doNothing().when(mApnEditorUT).addPreferencesFromResource(anyInt()); + + mApnEditorUT.onCreate(null); + + verify(mApnEditorUT).finish(); + } + private void initCursor() { doReturn(2).when(mCursor).getColumnCount(); doReturn(Integer.valueOf(2)).when(mCursor).getInt(CURSOR_INTEGER_INDEX);