From 27066c202f21a696ba8f98077b58fd05a21379f7 Mon Sep 17 00:00:00 2001 From: Tad Date: Mon, 9 Oct 2023 17:04:49 -0400 Subject: [PATCH] 17.1 October ASB work Signed-off-by: Tad --- .../android_external_libxml2/368053.patch | 123 +++++++++++++ .../0007-Always_Restict_Serial.patch | 2 +- .../android_frameworks_base/368055.patch | 60 +++++++ .../android_frameworks_base/368059.patch | 52 ++++++ .../368060-backport.patch | 152 ++++++++++++++++ .../android_frameworks_base/368061.patch | 29 +++ .../368062-backport.patch | 49 +++++ .../android_frameworks_base/368063.patch | 59 ++++++ .../368065-backport.patch | 136 ++++++++++++++ .../android_frameworks_base/368067.patch | 31 ++++ .../0001-Captive_Portal_Toggle.patch | 18 +- .../0003-Remove_SensorsOff_Tile.patch | 4 +- .../0004-Private_DNS.patch | 8 +- .../0005-Automatic_Reboot.patch | 10 +- .../0006-Bluetooth_Timeout.patch | 8 +- .../0007-WiFi_Timeout.patch | 8 +- .../0008-ptrace_scope.patch | 8 +- .../0009-exec_spawning_toggle.patch | 8 +- .../0010-Random_MAC-1.patch | 6 +- .../0010-Random_MAC-2.patch | 170 +++++++++--------- .../0011-LTE_Only_Mode.patch | 8 +- .../0012-hosts_toggle.patch | 8 +- .../0013-SUPL_Toggle.patch | 6 +- .../0014-microG_Toggle.patch | 8 +- .../368069-backport.patch | 129 +++++++++++++ .../368072.patch | 48 +++++ Scripts/LineageOS-17.1/Patch.sh | 18 ++ 27 files changed, 1026 insertions(+), 140 deletions(-) create mode 100644 Patches/LineageOS-17.1/android_external_libxml2/368053.patch create mode 100644 Patches/LineageOS-17.1/android_frameworks_base/368055.patch create mode 100644 Patches/LineageOS-17.1/android_frameworks_base/368059.patch create mode 100644 Patches/LineageOS-17.1/android_frameworks_base/368060-backport.patch create mode 100644 Patches/LineageOS-17.1/android_frameworks_base/368061.patch create mode 100644 Patches/LineageOS-17.1/android_frameworks_base/368062-backport.patch create mode 100644 Patches/LineageOS-17.1/android_frameworks_base/368063.patch create mode 100644 Patches/LineageOS-17.1/android_frameworks_base/368065-backport.patch create mode 100644 Patches/LineageOS-17.1/android_frameworks_base/368067.patch create mode 100644 Patches/LineageOS-17.1/android_packages_apps_Settings/368069-backport.patch create mode 100644 Patches/LineageOS-17.1/android_packages_services_Telecomm/368072.patch diff --git a/Patches/LineageOS-17.1/android_external_libxml2/368053.patch b/Patches/LineageOS-17.1/android_external_libxml2/368053.patch new file mode 100644 index 00000000..11df9387 --- /dev/null +++ b/Patches/LineageOS-17.1/android_external_libxml2/368053.patch @@ -0,0 +1,123 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Nick Wellnhofer +Date: Fri, 17 Feb 2023 15:53:07 +0100 +Subject: [PATCH] malloc-fail: Fix OOB read after xmlRegGetCounter + +Found with libFuzzer, see #344. + +(cherry picked from commit 1743c4c3fc58cf38ecce68db9de51d0f3651e033) + +I also copied the error label from +e64653c0e7975594e27d7de2ed4be062c1e4ad03 to fix the build failure. + +Bug: http://b/274231102 +Test: TreeHugger +(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:381160fc2a293d50a627c9e35bb34485bf97b6e7) +Merged-In: I3bad3e03092e17a761cb6e299aff848ebd35b6f4 +Change-Id: I3bad3e03092e17a761cb6e299aff848ebd35b6f4 +--- + xmlregexp.c | 28 ++++++++++++++++++++++++++++ + 1 file changed, 28 insertions(+) + +diff --git a/xmlregexp.c b/xmlregexp.c +index d255fbf0..6234a879 100644 +--- a/xmlregexp.c ++++ b/xmlregexp.c +@@ -1641,6 +1641,8 @@ xmlFAGenerateTransitions(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr from, + return(-1); + inter = ctxt->state; + counter = xmlRegGetCounter(ctxt); ++ if (counter < 0) ++ return(-1); + ctxt->counters[counter].min = atom->min - 1; + ctxt->counters[counter].max = atom->max - 1; + /* count the number of times we see it again */ +@@ -1659,6 +1661,8 @@ xmlFAGenerateTransitions(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr from, + * epsilon transition. + */ + counter = xmlRegGetCounter(ctxt); ++ if (counter < 0) ++ return(-1); + ctxt->counters[counter].min = atom->min - 1; + ctxt->counters[counter].max = atom->max - 1; + /* count the number of times we see it again */ +@@ -5924,6 +5928,8 @@ xmlAutomataNewCountTrans2(xmlAutomataPtr am, xmlAutomataStatePtr from, + * associate a counter to the transition. + */ + counter = xmlRegGetCounter(am); ++ if (counter < 0) ++ goto error; + am->counters[counter].min = min; + am->counters[counter].max = max; + +@@ -5943,6 +5949,10 @@ xmlAutomataNewCountTrans2(xmlAutomataPtr am, xmlAutomataStatePtr from, + if (min == 0) + xmlFAGenerateEpsilonTransition(am, from, to); + return(to); ++ ++error: ++ xmlRegFreeAtom(atom); ++ return(NULL); + } + + /** +@@ -5990,6 +6000,8 @@ xmlAutomataNewCountTrans(xmlAutomataPtr am, xmlAutomataStatePtr from, + * associate a counter to the transition. + */ + counter = xmlRegGetCounter(am); ++ if (counter < 0) ++ goto error; + am->counters[counter].min = min; + am->counters[counter].max = max; + +@@ -6009,6 +6021,10 @@ xmlAutomataNewCountTrans(xmlAutomataPtr am, xmlAutomataStatePtr from, + if (min == 0) + xmlFAGenerateEpsilonTransition(am, from, to); + return(to); ++ ++error: ++ xmlRegFreeAtom(atom); ++ return(NULL); + } + + /** +@@ -6076,6 +6092,8 @@ xmlAutomataNewOnceTrans2(xmlAutomataPtr am, xmlAutomataStatePtr from, + * associate a counter to the transition. + */ + counter = xmlRegGetCounter(am); ++ if (counter < 0) ++ goto error; + am->counters[counter].min = 1; + am->counters[counter].max = 1; + +@@ -6088,6 +6106,10 @@ xmlAutomataNewOnceTrans2(xmlAutomataPtr am, xmlAutomataStatePtr from, + xmlRegAtomPush(am, atom); + am->state = to; + return(to); ++ ++error: ++ xmlRegFreeAtom(atom); ++ return(NULL); + } + + +@@ -6135,6 +6157,8 @@ xmlAutomataNewOnceTrans(xmlAutomataPtr am, xmlAutomataStatePtr from, + * associate a counter to the transition. + */ + counter = xmlRegGetCounter(am); ++ if (counter < 0) ++ goto error; + am->counters[counter].min = 1; + am->counters[counter].max = 1; + +@@ -6147,6 +6171,10 @@ xmlAutomataNewOnceTrans(xmlAutomataPtr am, xmlAutomataStatePtr from, + xmlRegAtomPush(am, atom); + am->state = to; + return(to); ++ ++error: ++ xmlRegFreeAtom(atom); ++ return(NULL); + } + + /** diff --git a/Patches/LineageOS-17.1/android_frameworks_base/0007-Always_Restict_Serial.patch b/Patches/LineageOS-17.1/android_frameworks_base/0007-Always_Restict_Serial.patch index 3b76e4aa..88dcc104 100644 --- a/Patches/LineageOS-17.1/android_frameworks_base/0007-Always_Restict_Serial.patch +++ b/Patches/LineageOS-17.1/android_frameworks_base/0007-Always_Restict_Serial.patch @@ -10,7 +10,7 @@ requiring the READ_PHONE_STATE permission. 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java -index 4f3dd3449fae..d0fef3427b65 100644 +index ec8841debb7a..c9d3d44beb02 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -5010,12 +5010,7 @@ public class ActivityManagerService extends IActivityManager.Stub diff --git a/Patches/LineageOS-17.1/android_frameworks_base/368055.patch b/Patches/LineageOS-17.1/android_frameworks_base/368055.patch new file mode 100644 index 00000000..f534bf0a --- /dev/null +++ b/Patches/LineageOS-17.1/android_frameworks_base/368055.patch @@ -0,0 +1,60 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Jean-Michel Trivi +Date: Wed, 7 Dec 2022 04:36:46 +0000 +Subject: [PATCH] RingtoneManager: verify default ringtone is audio + +When a ringtone picker tries to set a ringtone through +RingtoneManager.setActualDefaultRingtoneUri (also +called by com.android.settings.DefaultRingtonePreference), +verify the mimeType can be obtained (not found when caller +doesn't have access to it) and it is an audio resource. + +Bug: 205837340 +Test: atest android.media.audio.cts.RingtoneManagerTest +(cherry picked from commit 38618f9fb16d3b5617e2289354d47abe5af17dad) +(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:377144b64325dadad102f5233ecb50a4446b205b) +Merged-In: I3f2c487ded405c0c1a83ef0a2fe99cff7cc9328e +Change-Id: I3f2c487ded405c0c1a83ef0a2fe99cff7cc9328e +--- + media/java/android/media/RingtoneManager.java | 19 +++++++++++++++++-- + 1 file changed, 17 insertions(+), 2 deletions(-) + +diff --git a/media/java/android/media/RingtoneManager.java b/media/java/android/media/RingtoneManager.java +index 05b96ad016a8..ad4751165d30 100644 +--- a/media/java/android/media/RingtoneManager.java ++++ b/media/java/android/media/RingtoneManager.java +@@ -792,10 +792,10 @@ public class RingtoneManager { + + return ringtoneUri; + } +- ++ + /** + * Sets the {@link Uri} of the default sound for a given sound type. +- * ++ * + * @param context A context used for querying. + * @param type The type whose default sound should be set. One of + * {@link #TYPE_RINGTONE}, {@link #TYPE_NOTIFICATION}, or +@@ -816,6 +816,21 @@ public class RingtoneManager { + if(!isInternalRingtoneUri(ringtoneUri)) { + ringtoneUri = ContentProvider.maybeAddUserId(ringtoneUri, context.getUserId()); + } ++ ++ if (ringtoneUri != null) { ++ final String mimeType = resolver.getType(ringtoneUri); ++ if (mimeType == null) { ++ Log.e(TAG, "setActualDefaultRingtoneUri for URI:" + ringtoneUri ++ + " ignored: failure to find mimeType (no access from this context?)"); ++ return; ++ } ++ if (!(mimeType.startsWith("audio/") || mimeType.equals("application/ogg"))) { ++ Log.e(TAG, "setActualDefaultRingtoneUri for URI:" + ringtoneUri ++ + " ignored: associated mimeType:" + mimeType + " is not an audio type"); ++ return; ++ } ++ } ++ + Settings.System.putStringForUser(resolver, setting, + ringtoneUri != null ? ringtoneUri.toString() : null, context.getUserId()); + diff --git a/Patches/LineageOS-17.1/android_frameworks_base/368059.patch b/Patches/LineageOS-17.1/android_frameworks_base/368059.patch new file mode 100644 index 00000000..e30a097b --- /dev/null +++ b/Patches/LineageOS-17.1/android_frameworks_base/368059.patch @@ -0,0 +1,52 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Josep del Rio +Date: Mon, 26 Jun 2023 11:16:37 +0000 +Subject: [PATCH] Do not share key mappings with JNI object + +The key mapping information between the native key mappings and +the KeyCharacterMap object available in Java is currently shared, +which means that a read can be attempted while it's being modified. + +Because the code changed between R and S, this CL fixes it just +for R; the patch for versions S+ is ag/23785419 + +Bug: 274058082 +Test: Presubmit +(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:4b3c4620166071561ec44961fb08a56676b4fd6c) +Merged-In: I3be94534dcda365da473f82347ae2e3f57bb1b42 +Change-Id: I3be94534dcda365da473f82347ae2e3f57bb1b42 +--- + core/jni/android_view_InputDevice.cpp | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +diff --git a/core/jni/android_view_InputDevice.cpp b/core/jni/android_view_InputDevice.cpp +index 9f4e3e516ada..81ada6ad535c 100644 +--- a/core/jni/android_view_InputDevice.cpp ++++ b/core/jni/android_view_InputDevice.cpp +@@ -14,6 +14,7 @@ + * limitations under the License. + */ + ++#include + #include + + #include +@@ -48,9 +49,16 @@ jobject android_view_InputDevice_create(JNIEnv* env, const InputDeviceInfo& devi + return NULL; + } + ++ sp map = deviceInfo.getKeyCharacterMap(); ++ if (map != nullptr) { ++ Parcel parcel; ++ map->writeToParcel(&parcel); ++ map = map->readFromParcel(&parcel); ++ } ++ + ScopedLocalRef kcmObj(env, +- android_view_KeyCharacterMap_create(env, deviceInfo.getId(), +- deviceInfo.getKeyCharacterMap())); ++ android_view_KeyCharacterMap_create(env, deviceInfo.getId(), ++ map)); + if (!kcmObj.get()) { + return NULL; + } diff --git a/Patches/LineageOS-17.1/android_frameworks_base/368060-backport.patch b/Patches/LineageOS-17.1/android_frameworks_base/368060-backport.patch new file mode 100644 index 00000000..5286352d --- /dev/null +++ b/Patches/LineageOS-17.1/android_frameworks_base/368060-backport.patch @@ -0,0 +1,152 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Tim Yu +Date: Tue, 20 Jun 2023 21:24:36 +0000 +Subject: [PATCH] Verify URI Permissions in Autofill RemoteViews + +Check permissions of URI inside of FillResponse's RemoteViews. If the +current user does not have the required permissions to view the URI, the +RemoteView is dropped from displaying. + +This fixes a security spill in which a user can view content of another +user through a malicious Autofill provider. + +Bug: 283137865 +Fixes: b/283264674 b/281666022 b/281665050 b/281848557 b/281533566 +b/281534749 b/283101289 +Test: Verified by POC app attached in bugs +Test: atest CtsAutoFillServiceTestCases (added new tests) +(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:26beceb9a252a50374d056b162fa7e8ea55051b3) +Merged-In: I6f4d2a35e89bbed7bd9e07bf5cd3e2d68b20af9a +Change-Id: I6f4d2a35e89bbed7bd9e07bf5cd3e2d68b20af9a +--- + .../com/android/server/autofill/Helper.java | 45 +++++++++++++++++++ + .../android/server/autofill/ui/FillUi.java | 11 +++-- + .../android/server/autofill/ui/SaveUi.java | 2 +- + 3 files changed, 54 insertions(+), 4 deletions(-) + +diff --git a/services/autofill/java/com/android/server/autofill/Helper.java b/services/autofill/java/com/android/server/autofill/Helper.java +index 80b0375a229d..8954a0c39091 100644 +--- a/services/autofill/java/com/android/server/autofill/Helper.java ++++ b/services/autofill/java/com/android/server/autofill/Helper.java +@@ -18,6 +18,8 @@ package com.android.server.autofill; + + import android.annotation.NonNull; + import android.annotation.Nullable; ++import android.annotation.UserIdInt; ++import android.app.ActivityManager; + import android.app.assist.AssistStructure; + import android.app.assist.AssistStructure.ViewNode; + import android.app.assist.AssistStructure.WindowNode; +@@ -31,13 +33,18 @@ import android.view.View; + import android.view.WindowManager; + import android.view.autofill.AutofillId; + import android.view.autofill.AutofillValue; ++import android.widget.RemoteViews; + + import com.android.internal.logging.nano.MetricsProto.MetricsEvent; + import com.android.internal.util.ArrayUtils; + + import java.io.PrintWriter; ++ ++import java.util.Arrays; + import java.util.ArrayDeque; + import java.util.ArrayList; ++import java.util.concurrent.atomic.AtomicBoolean; ++ + + public final class Helper { + +@@ -71,6 +78,44 @@ public final class Helper { + throw new UnsupportedOperationException("contains static members only"); + } + ++ private static boolean checkRemoteViewUriPermissions( ++ @UserIdInt int userId, @NonNull RemoteViews rView) { ++ final AtomicBoolean permissionsOk = new AtomicBoolean(true); ++ ++ rView.visitUris(uri -> { ++ int uriOwnerId = android.content.ContentProvider.getUserIdFromUri(uri); ++ boolean allowed = uriOwnerId == userId; ++ permissionsOk.set(allowed && permissionsOk.get()); ++ }); ++ ++ return permissionsOk.get(); ++ } ++ ++ /** ++ * Checks the URI permissions of the remote view, ++ * to see if the current userId is able to access it. ++ * ++ * Returns the RemoteView that is passed if user is able, null otherwise. ++ * ++ * TODO: instead of returning a null remoteview when ++ * the current userId cannot access an URI, ++ * return a new RemoteView with the URI removed. ++ */ ++ public static @Nullable RemoteViews sanitizeRemoteView(RemoteViews rView) { ++ if (rView == null) return null; ++ ++ int userId = ActivityManager.getCurrentUser(); ++ ++ boolean ok = checkRemoteViewUriPermissions(userId, rView); ++ if (!ok) { ++ Slog.w(TAG, ++ "sanitizeRemoteView() user: " + userId ++ + " tried accessing resource that does not belong to them"); ++ } ++ return (ok ? rView : null); ++ } ++ ++ + @Nullable + static AutofillId[] toArray(@Nullable ArraySet set) { + if (set == null) return null; +diff --git a/services/autofill/java/com/android/server/autofill/ui/FillUi.java b/services/autofill/java/com/android/server/autofill/ui/FillUi.java +index dbd4d8c168ba..e728a6b91e11 100644 +--- a/services/autofill/java/com/android/server/autofill/ui/FillUi.java ++++ b/services/autofill/java/com/android/server/autofill/ui/FillUi.java +@@ -140,8 +140,9 @@ final class FillUi { + + final LayoutInflater inflater = LayoutInflater.from(mContext); + +- final RemoteViews headerPresentation = response.getHeader(); +- final RemoteViews footerPresentation = response.getFooter(); ++ final RemoteViews headerPresentation = Helper.sanitizeRemoteView(response.getHeader()); ++ final RemoteViews footerPresentation = Helper.sanitizeRemoteView(response.getFooter()); ++ + final ViewGroup decor; + if (mFullScreen) { + decor = (ViewGroup) inflater.inflate(R.layout.autofill_dataset_picker_fullscreen, null); +@@ -219,6 +220,9 @@ final class FillUi { + ViewGroup container = decor.findViewById(R.id.autofill_dataset_picker); + final View content; + try { ++ if (Helper.sanitizeRemoteView(response.getPresentation()) == null) { ++ throw new RuntimeException("Permission error accessing RemoteView"); ++ } + content = response.getPresentation().applyWithTheme( + mContext, decor, interceptionHandler, mThemeId); + container.addView(content); +@@ -295,7 +299,8 @@ final class FillUi { + final Dataset dataset = response.getDatasets().get(i); + final int index = dataset.getFieldIds().indexOf(focusedViewId); + if (index >= 0) { +- final RemoteViews presentation = dataset.getFieldPresentation(index); ++ final RemoteViews presentation = Helper.sanitizeRemoteView( ++ dataset.getFieldPresentation(index)); + if (presentation == null) { + Slog.w(TAG, "not displaying UI on field " + focusedViewId + " because " + + "service didn't provide a presentation for it on " + dataset); +diff --git a/services/autofill/java/com/android/server/autofill/ui/SaveUi.java b/services/autofill/java/com/android/server/autofill/ui/SaveUi.java +index 73f5cb8326ea..6ae9a8b55c1e 100644 +--- a/services/autofill/java/com/android/server/autofill/ui/SaveUi.java ++++ b/services/autofill/java/com/android/server/autofill/ui/SaveUi.java +@@ -288,7 +288,7 @@ final class SaveUi { + final int type = info.getType(); + writeLog(MetricsEvent.AUTOFILL_SAVE_CUSTOM_DESCRIPTION, type); + +- final RemoteViews template = customDescription.getPresentation(); ++ final RemoteViews template = Helper.sanitizeRemoteView(customDescription.getPresentation()); + if (template == null) { + Slog.w(TAG, "No remote view on custom description"); + return false; diff --git a/Patches/LineageOS-17.1/android_frameworks_base/368061.patch b/Patches/LineageOS-17.1/android_frameworks_base/368061.patch new file mode 100644 index 00000000..cbceddb2 --- /dev/null +++ b/Patches/LineageOS-17.1/android_frameworks_base/368061.patch @@ -0,0 +1,29 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Josep del Rio +Date: Wed, 12 Jul 2023 16:32:05 +0000 +Subject: [PATCH] Fix KCM key mapping cloning + +ag/23792288 tried to fix a security issue by cloning the key +mappings, but unfortunately the parcel was not being rewinded. + +Bug: 274058082 +Test: Confirmed change works in newer Android versions +(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:aaaba6cf190d976efdc5db6c78997dbdc9214c15) +Merged-In: I6f75b9202e20d82ebf81a35a2916e653ee1b8372 +Change-Id: I6f75b9202e20d82ebf81a35a2916e653ee1b8372 +--- + core/jni/android_view_InputDevice.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/core/jni/android_view_InputDevice.cpp b/core/jni/android_view_InputDevice.cpp +index 81ada6ad535c..87102d3359a7 100644 +--- a/core/jni/android_view_InputDevice.cpp ++++ b/core/jni/android_view_InputDevice.cpp +@@ -53,6 +53,7 @@ jobject android_view_InputDevice_create(JNIEnv* env, const InputDeviceInfo& devi + if (map != nullptr) { + Parcel parcel; + map->writeToParcel(&parcel); ++ parcel.setDataPosition(0); + map = map->readFromParcel(&parcel); + } + diff --git a/Patches/LineageOS-17.1/android_frameworks_base/368062-backport.patch b/Patches/LineageOS-17.1/android_frameworks_base/368062-backport.patch new file mode 100644 index 00000000..219965c4 --- /dev/null +++ b/Patches/LineageOS-17.1/android_frameworks_base/368062-backport.patch @@ -0,0 +1,49 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Hongwei Wang +Date: Wed, 24 May 2023 19:35:44 -0700 +Subject: [PATCH] Disallow loading icon from content URI to PipMenu + +Bug: 278246904 +Test: manually, with the PoC app attached to the bug +(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:5f5a87d8a0dc9190327ba0e6113d5b80ee96abae) +Merged-In: Iecfc1fb962de611cbe3c51a44ba4fded53925a7d +Change-Id: Iecfc1fb962de611cbe3c51a44ba4fded53925a7d +--- + .../systemui/pip/phone/PipMenuActivity.java | 17 ++++++++++++----- + 1 file changed, 12 insertions(+), 5 deletions(-) + +diff --git a/packages/SystemUI/src/com/android/systemui/pip/phone/PipMenuActivity.java b/packages/SystemUI/src/com/android/systemui/pip/phone/PipMenuActivity.java +index ec6d7ffaedb0..08658694c5b8 100644 +--- a/packages/SystemUI/src/com/android/systemui/pip/phone/PipMenuActivity.java ++++ b/packages/SystemUI/src/com/android/systemui/pip/phone/PipMenuActivity.java +@@ -51,6 +51,7 @@ import android.graphics.Color; + import android.graphics.Rect; + import android.graphics.drawable.ColorDrawable; + import android.graphics.drawable.Drawable; ++import android.graphics.drawable.Icon; + import android.net.Uri; + import android.os.Bundle; + import android.os.Handler; +@@ -457,11 +458,17 @@ public class PipMenuActivity extends Activity { + final RemoteAction action = mActions.get(i); + final ImageView actionView = (ImageView) mActionsGroup.getChildAt(i); + +- // TODO: Check if the action drawable has changed before we reload it +- action.getIcon().loadDrawableAsync(this, d -> { +- d.setTint(Color.WHITE); +- actionView.setImageDrawable(d); +- }, mHandler); ++ final int iconType = action.getIcon().getType(); ++ if (iconType == Icon.TYPE_URI /* || iconType == Icon.TYPE_URI_ADAPTIVE_BITMAP*/) { ++ // Disallow loading icon from content URI ++ actionView.setImageDrawable(null); ++ } else { ++ // TODO: Check if the action drawable has changed before we reload it ++ action.getIcon().loadDrawableAsync(this, d -> { ++ d.setTint(Color.WHITE); ++ actionView.setImageDrawable(d); ++ }, mHandler); ++ } + actionView.setContentDescription(action.getContentDescription()); + if (action.isEnabled()) { + actionView.setOnClickListener(v -> { diff --git a/Patches/LineageOS-17.1/android_frameworks_base/368063.patch b/Patches/LineageOS-17.1/android_frameworks_base/368063.patch new file mode 100644 index 00000000..1a813b2c --- /dev/null +++ b/Patches/LineageOS-17.1/android_frameworks_base/368063.patch @@ -0,0 +1,59 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Kunal Malhotra +Date: Fri, 2 Jun 2023 23:32:02 +0000 +Subject: [PATCH] Fixing DatabaseUtils to detect malformed UTF-16 strings + +Test: tested with POC in bug, also using atest +Bug: 224771621 +(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:fb4a72e3943d166088407e61aa4439ac349f3f12) +Merged-In: Ide65205b83063801971c5778af3154bcf3f0e530 +Change-Id: Ide65205b83063801971c5778af3154bcf3f0e530 +--- + core/java/android/database/DatabaseUtils.java | 32 +++++++++++++------ + 1 file changed, 23 insertions(+), 9 deletions(-) + +diff --git a/core/java/android/database/DatabaseUtils.java b/core/java/android/database/DatabaseUtils.java +index 171fc8270d37..648b50877b61 100644 +--- a/core/java/android/database/DatabaseUtils.java ++++ b/core/java/android/database/DatabaseUtils.java +@@ -463,17 +463,31 @@ public class DatabaseUtils { + */ + public static void appendEscapedSQLString(StringBuilder sb, String sqlString) { + sb.append('\''); +- if (sqlString.indexOf('\'') != -1) { +- int length = sqlString.length(); +- for (int i = 0; i < length; i++) { +- char c = sqlString.charAt(i); +- if (c == '\'') { +- sb.append('\''); ++ int length = sqlString.length(); ++ for (int i = 0; i < length; i++) { ++ char c = sqlString.charAt(i); ++ if (Character.isHighSurrogate(c)) { ++ if (i == length - 1) { ++ continue; ++ } ++ if (Character.isLowSurrogate(sqlString.charAt(i + 1))) { ++ // add them both ++ sb.append(c); ++ sb.append(sqlString.charAt(i + 1)); ++ continue; ++ } else { ++ // this is a lone surrogate, skip it ++ continue; + } +- sb.append(c); + } +- } else +- sb.append(sqlString); ++ if (Character.isLowSurrogate(c)) { ++ continue; ++ } ++ if (c == '\'') { ++ sb.append('\''); ++ } ++ sb.append(c); ++ } + sb.append('\''); + } + diff --git a/Patches/LineageOS-17.1/android_frameworks_base/368065-backport.patch b/Patches/LineageOS-17.1/android_frameworks_base/368065-backport.patch new file mode 100644 index 00000000..a5964ea8 --- /dev/null +++ b/Patches/LineageOS-17.1/android_frameworks_base/368065-backport.patch @@ -0,0 +1,136 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Eric Biggers +Date: Fri, 28 Jul 2023 22:03:03 +0000 +Subject: [PATCH] RESTRICT AUTOMERGE: SettingsProvider: exclude secure_frp_mode + from resets + +When RescueParty detects that a system process is crashing frequently, +it tries to recover in various ways, such as by resetting all settings. +Unfortunately, this included resetting the secure_frp_mode setting, +which is the means by which the system keeps track of whether the +Factory Reset Protection (FRP) challenge has been passed yet. With this +setting reset, some FRP restrictions went away and it became possible to +bypass FRP by setting a new lockscreen credential. + +Fix this by excluding secure_frp_mode from resets. + +Note: currently this bug isn't reproducible on 'main' due to ag/23727749 +disabling much of RescueParty, but that is a temporary change. + +Bug: 253043065 +Test: With ag/23727749 reverted and with my fix to prevent + com.android.settings from crashing *not* applied, tried repeatedly + setting lockscreen credential while in FRP mode, using the + smartlock setup activity launched by intent via adb. Verified + that although RescueParty is still triggered after 5 attempts, + secure_frp_mode is no longer reset (its value remains "1"). +Test: Verified that secure_frp_mode still gets changed from 1 to 0 when + FRP is passed legitimately. +Test: atest com.android.providers.settings.SettingsProviderTest +Test: atest android.provider.SettingsProviderTest +(cherry picked from commit 9890dd7f15c091f7d1a09e4fddb9f85d32015955) +(changed Global.SECURE_FRP_MODE to Secure.SECURE_FRP_MODE, + needed because this setting was moved in U) +(removed static keyword from shouldExcludeSettingFromReset(), + needed for compatibility with Java 15 and earlier) +(resolved conflict in resetSettingsLocked()) +(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:f0f020c21fd29d8076733e07847e6314172a312e) +Merged-In: Id95ed43b9cc2208090064392bcd5dc012710af93 +Change-Id: Id95ed43b9cc2208090064392bcd5dc012710af93 +--- + .../providers/settings/SettingsProvider.java | 17 ++++++++++--- + .../settings/SettingsProviderTest.java | 25 +++++++++++++++++++ + 2 files changed, 38 insertions(+), 4 deletions(-) + +diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java +index 760b0604a604..1569129c3797 100644 +--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java ++++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java +@@ -2737,6 +2737,15 @@ public class SettingsProvider extends ContentProvider { + return settingsState.getSettingLocked(name); + } + ++ private boolean shouldExcludeSettingFromReset(Setting setting, String prefix) { ++ // If a prefix was specified, exclude settings whose names don't start with it. ++ if (prefix != null && !setting.getName().startsWith(prefix)) { ++ return true; ++ } ++ // Never reset SECURE_FRP_MODE, as it could be abused to bypass FRP via RescueParty. ++ return Secure.SECURE_FRP_MODE.equals(setting.getName()); ++ } ++ + public void resetSettingsLocked(int type, int userId, String packageName, int mode, + String tag) { + resetSettingsLocked(type, userId, packageName, mode, tag, null); +@@ -2757,7 +2766,7 @@ public class SettingsProvider extends ContentProvider { + Setting setting = settingsState.getSettingLocked(name); + if (packageName.equals(setting.getPackageName())) { + if ((tag != null && !tag.equals(setting.getTag())) +- || (prefix != null && !setting.getName().startsWith(prefix))) { ++ || shouldExcludeSettingFromReset(setting, prefix)) { + continue; + } + if (settingsState.resetSettingLocked(name)) { +@@ -2777,7 +2786,7 @@ public class SettingsProvider extends ContentProvider { + Setting setting = settingsState.getSettingLocked(name); + if (!SettingsState.isSystemPackage(getContext(), + setting.getPackageName(), INVALID_UID, userId)) { +- if (prefix != null && !setting.getName().startsWith(prefix)) { ++ if (shouldExcludeSettingFromReset(setting, prefix)) { + continue; + } + if (settingsState.resetSettingLocked(name)) { +@@ -2797,7 +2806,7 @@ public class SettingsProvider extends ContentProvider { + Setting setting = settingsState.getSettingLocked(name); + if (!SettingsState.isSystemPackage(getContext(), + setting.getPackageName(), INVALID_UID, userId)) { +- if (prefix != null && !setting.getName().startsWith(prefix)) { ++ if (shouldExcludeSettingFromReset(setting, prefix)) { + continue; + } + if (setting.isDefaultFromSystem()) { +@@ -2820,7 +2829,7 @@ public class SettingsProvider extends ContentProvider { + for (String name : settingsState.getSettingNamesLocked()) { + Setting setting = settingsState.getSettingLocked(name); + boolean someSettingChanged = false; +- if (prefix != null && !setting.getName().startsWith(prefix)) { ++ if (shouldExcludeSettingFromReset(setting, prefix)) { + continue; + } + if (setting.isDefaultFromSystem()) { +diff --git a/packages/SettingsProvider/test/src/com/android/providers/settings/SettingsProviderTest.java b/packages/SettingsProvider/test/src/com/android/providers/settings/SettingsProviderTest.java +index 183f5997a6b5..47c15d257ded 100644 +--- a/packages/SettingsProvider/test/src/com/android/providers/settings/SettingsProviderTest.java ++++ b/packages/SettingsProvider/test/src/com/android/providers/settings/SettingsProviderTest.java +@@ -463,6 +463,31 @@ public class SettingsProviderTest extends BaseSettingsProviderTest { + } + } + ++ // To prevent FRP bypasses, the SECURE_FRP_MODE setting should not be reset when all other ++ // settings are reset. But it should still be possible to explicitly set its value. ++ @Test ++ public void testSecureFrpModeSettingCannotBeReset() throws Exception { ++ final String name = Settings.Secure.SECURE_FRP_MODE; ++ final String origValue = getSetting(SETTING_TYPE_GLOBAL, name); ++ setSettingViaShell(SETTING_TYPE_GLOBAL, name, "1", false); ++ try { ++ assertEquals("1", getSetting(SETTING_TYPE_GLOBAL, name)); ++ for (int type : new int[] { SETTING_TYPE_GLOBAL, SETTING_TYPE_SECURE }) { ++ resetSettingsViaShell(type, Settings.RESET_MODE_UNTRUSTED_DEFAULTS); ++ resetSettingsViaShell(type, Settings.RESET_MODE_UNTRUSTED_CHANGES); ++ resetSettingsViaShell(type, Settings.RESET_MODE_TRUSTED_DEFAULTS); ++ } ++ // The value should still be "1". It should not have been reset to null. ++ assertEquals("1", getSetting(SETTING_TYPE_GLOBAL, name)); ++ // It should still be possible to explicitly set the value to "0". ++ setSettingViaShell(SETTING_TYPE_GLOBAL, name, "0", false); ++ assertEquals("0", getSetting(SETTING_TYPE_GLOBAL, name)); ++ } finally { ++ setSettingViaShell(SETTING_TYPE_GLOBAL, name, origValue, false); ++ assertEquals(origValue, getSetting(SETTING_TYPE_GLOBAL, name)); ++ } ++ } ++ + private void doTestQueryStringInBracketsViaProviderApiForType(int type) { + // Make sure we have a clean slate. + deleteStringViaProviderApi(type, FAKE_SETTING_NAME); diff --git a/Patches/LineageOS-17.1/android_frameworks_base/368067.patch b/Patches/LineageOS-17.1/android_frameworks_base/368067.patch new file mode 100644 index 00000000..55ba755a --- /dev/null +++ b/Patches/LineageOS-17.1/android_frameworks_base/368067.patch @@ -0,0 +1,31 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Aaron Liu +Date: Thu, 10 Aug 2023 15:37:24 +0000 +Subject: [PATCH] Revert "DO NOT MERGE Dismiss keyguard when simpin auth'd + and..." + +This reverts commit 09f004722284ef6b9790ddf9338a1708b3f0833c. + +Reason for revert: causing a partner bug +Fixes: 295205456 +Bug: 222446076 +(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:8df038265475bb062ead9eec1749ee92a0f5eb4e) +Merged-In: Ida11d98117727f63547b096617a4778bea429e22 +Change-Id: Ida11d98117727f63547b096617a4778bea429e22 +--- + .../src/com/android/keyguard/KeyguardSecurityContainer.java | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java +index bd555e7360d8..89514a52d0bd 100644 +--- a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java ++++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java +@@ -529,7 +529,7 @@ public class KeyguardSecurityContainer extends FrameLayout implements KeyguardSe + case SimPuk: + // Shortcut for SIM PIN/PUK to go to directly to user's security screen or home + SecurityMode securityMode = mSecurityModel.getSecurityMode(targetUserId); +- if (securityMode == SecurityMode.None || mLockPatternUtils.isLockScreenDisabled( ++ if (securityMode == SecurityMode.None && mLockPatternUtils.isLockScreenDisabled( + KeyguardUpdateMonitor.getCurrentUser())) { + finish = true; + eventSubtype = BOUNCER_DISMISS_SIM; diff --git a/Patches/LineageOS-17.1/android_packages_apps_Settings/0001-Captive_Portal_Toggle.patch b/Patches/LineageOS-17.1/android_packages_apps_Settings/0001-Captive_Portal_Toggle.patch index c577c5fe..9c0e1a73 100644 --- a/Patches/LineageOS-17.1/android_packages_apps_Settings/0001-Captive_Portal_Toggle.patch +++ b/Patches/LineageOS-17.1/android_packages_apps_Settings/0001-Captive_Portal_Toggle.patch @@ -29,7 +29,7 @@ Change-Id: Ibbffdb5f3930df74ca8b4ba93d451f7fad086989 create mode 100644 src/com/android/settings/network/CaptivePortalWarningDialogHost.java diff --git a/res/values-de/cm_strings.xml b/res/values-de/cm_strings.xml -index d1ed0c6863..7ab4de0561 100644 +index d1ed0c68631..7ab4de05610 100644 --- a/res/values-de/cm_strings.xml +++ b/res/values-de/cm_strings.xml @@ -112,4 +112,7 @@ @@ -41,7 +41,7 @@ index d1ed0c6863..7ab4de0561 100644 + Nach dem Ausschalten der Captive-Portal-Erkennung empfangen Sie keine Verbindungs-Rückmeldung mehr. Wirklich fortfahren? diff --git a/res/values/cm_strings.xml b/res/values/cm_strings.xml -index 12ad48e683..44fad8e762 100644 +index 12ad48e6834..44fad8e762a 100644 --- a/res/values/cm_strings.xml +++ b/res/values/cm_strings.xml @@ -197,4 +197,9 @@ @@ -55,7 +55,7 @@ index 12ad48e683..44fad8e762 100644 + If you switch off the captive portal, you will not receive connectivity informations any longer. Really switch off? diff --git a/res/xml/network_and_internet.xml b/res/xml/network_and_internet.xml -index 32b51d48fc..456f169e8f 100644 +index 32b51d48fca..456f169e8fa 100644 --- a/res/xml/network_and_internet.xml +++ b/res/xml/network_and_internet.xml @@ -97,4 +97,10 @@ @@ -70,7 +70,7 @@ index 32b51d48fc..456f169e8f 100644 + diff --git a/res/xml/network_and_internet_v2.xml b/res/xml/network_and_internet_v2.xml -index 36044803d1..e2a271f63a 100644 +index 36044803d1f..e2a271f63a8 100644 --- a/res/xml/network_and_internet_v2.xml +++ b/res/xml/network_and_internet_v2.xml @@ -107,4 +107,10 @@ @@ -85,7 +85,7 @@ index 36044803d1..e2a271f63a 100644 + diff --git a/src/com/android/settings/ResetNetworkConfirm.java b/src/com/android/settings/ResetNetworkConfirm.java -index beb0528f6a..e24cbfc424 100644 +index beb0528f6a9..e24cbfc424d 100644 --- a/src/com/android/settings/ResetNetworkConfirm.java +++ b/src/com/android/settings/ResetNetworkConfirm.java @@ -35,6 +35,7 @@ import android.os.Bundle; @@ -108,7 +108,7 @@ index beb0528f6a..e24cbfc424 100644 restoreDefaultApn(mContext); diff --git a/src/com/android/settings/network/CaptivePortalModePreferenceController.java b/src/com/android/settings/network/CaptivePortalModePreferenceController.java new file mode 100644 -index 0000000000..ae21b29292 +index 00000000000..ae21b292922 --- /dev/null +++ b/src/com/android/settings/network/CaptivePortalModePreferenceController.java @@ -0,0 +1,82 @@ @@ -196,7 +196,7 @@ index 0000000000..ae21b29292 +} diff --git a/src/com/android/settings/network/CaptivePortalWarningDialog.java b/src/com/android/settings/network/CaptivePortalWarningDialog.java new file mode 100644 -index 0000000000..d27bd7d2f0 +index 00000000000..d27bd7d2f06 --- /dev/null +++ b/src/com/android/settings/network/CaptivePortalWarningDialog.java @@ -0,0 +1,74 @@ @@ -276,7 +276,7 @@ index 0000000000..d27bd7d2f0 +} diff --git a/src/com/android/settings/network/CaptivePortalWarningDialogHost.java b/src/com/android/settings/network/CaptivePortalWarningDialogHost.java new file mode 100644 -index 0000000000..7a04d1f831 +index 00000000000..7a04d1f8311 --- /dev/null +++ b/src/com/android/settings/network/CaptivePortalWarningDialogHost.java @@ -0,0 +1,32 @@ @@ -313,7 +313,7 @@ index 0000000000..7a04d1f831 + void onCaptivePortalSwitchOffDialogDismissed(); +} diff --git a/src/com/android/settings/network/NetworkDashboardFragment.java b/src/com/android/settings/network/NetworkDashboardFragment.java -index 8c686a54aa..f16d489331 100644 +index 8c686a54aae..f16d4893317 100644 --- a/src/com/android/settings/network/NetworkDashboardFragment.java +++ b/src/com/android/settings/network/NetworkDashboardFragment.java @@ -44,7 +44,7 @@ import java.util.List; diff --git a/Patches/LineageOS-17.1/android_packages_apps_Settings/0003-Remove_SensorsOff_Tile.patch b/Patches/LineageOS-17.1/android_packages_apps_Settings/0003-Remove_SensorsOff_Tile.patch index 12b05a17..f6c3cfa2 100644 --- a/Patches/LineageOS-17.1/android_packages_apps_Settings/0003-Remove_SensorsOff_Tile.patch +++ b/Patches/LineageOS-17.1/android_packages_apps_Settings/0003-Remove_SensorsOff_Tile.patch @@ -11,7 +11,7 @@ Change-Id: Ic1dce1c0fffc3c3f6459c4c85e0a64d480d3315a 2 files changed, 53 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml -index c7c55d381e..fd6f4178bd 100644 +index c7c55d381e1..fd6f4178bd8 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -3080,17 +3080,6 @@ @@ -33,7 +33,7 @@ index c7c55d381e..fd6f4178bd 100644 android:name=".HelpTrampoline" android:exported="true" diff --git a/src/com/android/settings/development/qstile/DevelopmentTiles.java b/src/com/android/settings/development/qstile/DevelopmentTiles.java -index bb791abef8..2fdb410150 100644 +index bb791abef81..2fdb410150e 100644 --- a/src/com/android/settings/development/qstile/DevelopmentTiles.java +++ b/src/com/android/settings/development/qstile/DevelopmentTiles.java @@ -20,7 +20,6 @@ import android.app.settings.SettingsEnums; diff --git a/Patches/LineageOS-17.1/android_packages_apps_Settings/0004-Private_DNS.patch b/Patches/LineageOS-17.1/android_packages_apps_Settings/0004-Private_DNS.patch index 1ce68c19..1e30f78a 100644 --- a/Patches/LineageOS-17.1/android_packages_apps_Settings/0004-Private_DNS.patch +++ b/Patches/LineageOS-17.1/android_packages_apps_Settings/0004-Private_DNS.patch @@ -21,7 +21,7 @@ Change-Id: I423ad5a3c360a687a226e61df3f75b5550f851c0 4 files changed, 249 insertions(+) diff --git a/res/layout/private_dns_mode_dialog.xml b/res/layout/private_dns_mode_dialog.xml -index 641905dc01..3614dd7cd8 100644 +index 641905dc010..3614dd7cd8f 100644 --- a/res/layout/private_dns_mode_dialog.xml +++ b/res/layout/private_dns_mode_dialog.xml @@ -38,6 +38,110 @@ @@ -136,7 +136,7 @@ index 641905dc01..3614dd7cd8 100644 android:id="@+id/private_dns_mode_opportunistic" android:text="@string/private_dns_mode_opportunistic" diff --git a/res/values/cm_strings.xml b/res/values/cm_strings.xml -index 44fad8e762..fb2c7377cd 100644 +index 44fad8e762a..fb2c7377cdc 100644 --- a/res/values/cm_strings.xml +++ b/res/values/cm_strings.xml @@ -104,6 +104,21 @@ @@ -162,7 +162,7 @@ index 44fad8e762..fb2c7377cd 100644 Link ring & notification volumes diff --git a/src/com/android/settings/network/PrivateDnsModeDialogPreference.java b/src/com/android/settings/network/PrivateDnsModeDialogPreference.java -index 1655c69cea..0beef5fc13 100644 +index 1655c69cea4..0beef5fc13a 100644 --- a/src/com/android/settings/network/PrivateDnsModeDialogPreference.java +++ b/src/com/android/settings/network/PrivateDnsModeDialogPreference.java @@ -17,6 +17,19 @@ package com.android.settings.network; @@ -252,7 +252,7 @@ index 1655c69cea..0beef5fc13 100644 mMode = PRIVATE_DNS_MODE_OPPORTUNISTIC; break; diff --git a/src/com/android/settings/network/PrivateDnsPreferenceController.java b/src/com/android/settings/network/PrivateDnsPreferenceController.java -index b74345170c..0cbb9d52de 100644 +index b74345170c0..0cbb9d52de8 100644 --- a/src/com/android/settings/network/PrivateDnsPreferenceController.java +++ b/src/com/android/settings/network/PrivateDnsPreferenceController.java @@ -17,6 +17,19 @@ diff --git a/Patches/LineageOS-17.1/android_packages_apps_Settings/0005-Automatic_Reboot.patch b/Patches/LineageOS-17.1/android_packages_apps_Settings/0005-Automatic_Reboot.patch index 612fd4a9..b2eeafd0 100644 --- a/Patches/LineageOS-17.1/android_packages_apps_Settings/0005-Automatic_Reboot.patch +++ b/Patches/LineageOS-17.1/android_packages_apps_Settings/0005-Automatic_Reboot.patch @@ -13,7 +13,7 @@ Subject: [PATCH] add auto-reboot setting create mode 100644 src/com/android/settings/security/AutoRebootPreferenceController.java diff --git a/res/values/arrays.xml b/res/values/arrays.xml -index b983f467df..5813bb18db 100644 +index b983f467df0..5813bb18dbb 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -144,6 +144,37 @@ @@ -55,7 +55,7 @@ index b983f467df..5813bb18db 100644 Small Default diff --git a/res/values/strings.xml b/res/values/strings.xml -index f6e3b0f62d..8f4a3c6115 100644 +index f6e3b0f62df..8f4a3c61157 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -810,6 +810,9 @@ @@ -69,7 +69,7 @@ index f6e3b0f62d..8f4a3c6115 100644 Trust agents only extend unlock diff --git a/res/xml/security_dashboard_settings.xml b/res/xml/security_dashboard_settings.xml -index 6a896ced42..1667943ba4 100644 +index 6a896ced42c..1667943ba41 100644 --- a/res/xml/security_dashboard_settings.xml +++ b/res/xml/security_dashboard_settings.xml @@ -55,6 +55,14 @@ @@ -89,7 +89,7 @@ index 6a896ced42..1667943ba4 100644 diff --git a/src/com/android/settings/security/AutoRebootPreferenceController.java b/src/com/android/settings/security/AutoRebootPreferenceController.java new file mode 100644 -index 0000000000..c7a75219a5 +index 00000000000..c7a75219a5e --- /dev/null +++ b/src/com/android/settings/security/AutoRebootPreferenceController.java @@ -0,0 +1,82 @@ @@ -176,7 +176,7 @@ index 0000000000..c7a75219a5 + } +} diff --git a/src/com/android/settings/security/SecuritySettings.java b/src/com/android/settings/security/SecuritySettings.java -index ecf3359e20..b5d7814e4a 100644 +index ecf3359e200..b5d7814e4a9 100644 --- a/src/com/android/settings/security/SecuritySettings.java +++ b/src/com/android/settings/security/SecuritySettings.java @@ -120,6 +120,7 @@ public class SecuritySettings extends DashboardFragment { diff --git a/Patches/LineageOS-17.1/android_packages_apps_Settings/0006-Bluetooth_Timeout.patch b/Patches/LineageOS-17.1/android_packages_apps_Settings/0006-Bluetooth_Timeout.patch index b6195ddb..bb3d4fb4 100644 --- a/Patches/LineageOS-17.1/android_packages_apps_Settings/0006-Bluetooth_Timeout.patch +++ b/Patches/LineageOS-17.1/android_packages_apps_Settings/0006-Bluetooth_Timeout.patch @@ -12,7 +12,7 @@ Subject: [PATCH] add bluetooth auto-turn-off setting create mode 100644 src/com/android/settings/bluetooth/BluetoothTimeoutPreferenceController.java diff --git a/res/values/arrays.xml b/res/values/arrays.xml -index 5813bb18db..40d01907a4 100644 +index 5813bb18dbb..40d01907a43 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -39,6 +39,50 @@ @@ -67,7 +67,7 @@ index 5813bb18db..40d01907a4 100644 15 seconds diff --git a/res/values/strings.xml b/res/values/strings.xml -index 8f4a3c6115..ef517e8503 100644 +index 8f4a3c61157..ef517e8503c 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -25,6 +25,25 @@ @@ -97,7 +97,7 @@ index 8f4a3c6115..ef517e8503 100644 Unknown diff --git a/res/xml/connected_devices.xml b/res/xml/connected_devices.xml -index da55fe33f4..d0f9dcc507 100644 +index da55fe33f4f..d0f9dcc507e 100644 --- a/res/xml/connected_devices.xml +++ b/res/xml/connected_devices.xml @@ -52,6 +52,14 @@ @@ -117,7 +117,7 @@ index da55fe33f4..d0f9dcc507 100644 android:title="@string/connected_device_previously_connected_title" diff --git a/src/com/android/settings/bluetooth/BluetoothTimeoutPreferenceController.java b/src/com/android/settings/bluetooth/BluetoothTimeoutPreferenceController.java new file mode 100644 -index 0000000000..244147948a +index 00000000000..244147948aa --- /dev/null +++ b/src/com/android/settings/bluetooth/BluetoothTimeoutPreferenceController.java @@ -0,0 +1,115 @@ diff --git a/Patches/LineageOS-17.1/android_packages_apps_Settings/0007-WiFi_Timeout.patch b/Patches/LineageOS-17.1/android_packages_apps_Settings/0007-WiFi_Timeout.patch index 3f80d913..5c698e12 100644 --- a/Patches/LineageOS-17.1/android_packages_apps_Settings/0007-WiFi_Timeout.patch +++ b/Patches/LineageOS-17.1/android_packages_apps_Settings/0007-WiFi_Timeout.patch @@ -12,7 +12,7 @@ Subject: [PATCH] add Wi-Fi timeout feature create mode 100644 src/com/android/settings/wifi/WifiTimeoutPreferenceController.java diff --git a/res/values/arrays.xml b/res/values/arrays.xml -index 40d01907a4..0a9a9a31e8 100644 +index 40d01907a43..0a9a9a31e82 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -83,6 +83,50 @@ @@ -67,7 +67,7 @@ index 40d01907a4..0a9a9a31e8 100644 15 seconds diff --git a/res/values/strings.xml b/res/values/strings.xml -index ef517e8503..228d9570dd 100644 +index ef517e8503c..228d9570dd7 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -44,6 +44,25 @@ @@ -97,7 +97,7 @@ index ef517e8503..228d9570dd 100644 Unknown diff --git a/res/xml/wifi_configure_settings.xml b/res/xml/wifi_configure_settings.xml -index c6214662d3..27e913949e 100644 +index c6214662d35..27e913949e6 100644 --- a/res/xml/wifi_configure_settings.xml +++ b/res/xml/wifi_configure_settings.xml @@ -26,6 +26,14 @@ @@ -117,7 +117,7 @@ index c6214662d3..27e913949e 100644 android:icon="@drawable/ic_open_wifi_autoconnect" diff --git a/src/com/android/settings/wifi/WifiTimeoutPreferenceController.java b/src/com/android/settings/wifi/WifiTimeoutPreferenceController.java new file mode 100644 -index 0000000000..7116c90519 +index 00000000000..7116c905190 --- /dev/null +++ b/src/com/android/settings/wifi/WifiTimeoutPreferenceController.java @@ -0,0 +1,115 @@ diff --git a/Patches/LineageOS-17.1/android_packages_apps_Settings/0008-ptrace_scope.patch b/Patches/LineageOS-17.1/android_packages_apps_Settings/0008-ptrace_scope.patch index 0110274c..d215a33b 100644 --- a/Patches/LineageOS-17.1/android_packages_apps_Settings/0008-ptrace_scope.patch +++ b/Patches/LineageOS-17.1/android_packages_apps_Settings/0008-ptrace_scope.patch @@ -12,7 +12,7 @@ Subject: [PATCH] add native debugging setting create mode 100644 src/com/android/settings/security/NativeDebugPreferenceController.java diff --git a/res/values/strings.xml b/res/values/strings.xml -index 228d9570dd..d965a63b0d 100644 +index 228d9570dd7..d965a63b0d5 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -11316,6 +11316,9 @@ @@ -26,7 +26,7 @@ index 228d9570dd..d965a63b0d 100644 Privacy diff --git a/res/xml/security_dashboard_settings.xml b/res/xml/security_dashboard_settings.xml -index 1667943ba4..2c7b006f8b 100644 +index 1667943ba41..2c7b006f8bb 100644 --- a/res/xml/security_dashboard_settings.xml +++ b/res/xml/security_dashboard_settings.xml @@ -63,6 +63,12 @@ @@ -44,7 +44,7 @@ index 1667943ba4..2c7b006f8b 100644 diff --git a/src/com/android/settings/security/NativeDebugPreferenceController.java b/src/com/android/settings/security/NativeDebugPreferenceController.java new file mode 100644 -index 0000000000..9271e6e21c +index 00000000000..9271e6e21cf --- /dev/null +++ b/src/com/android/settings/security/NativeDebugPreferenceController.java @@ -0,0 +1,106 @@ @@ -155,7 +155,7 @@ index 0000000000..9271e6e21c + } +} diff --git a/src/com/android/settings/security/SecuritySettings.java b/src/com/android/settings/security/SecuritySettings.java -index b5d7814e4a..7aa126b75c 100644 +index b5d7814e4a9..7aa126b75c7 100644 --- a/src/com/android/settings/security/SecuritySettings.java +++ b/src/com/android/settings/security/SecuritySettings.java @@ -121,6 +121,7 @@ public class SecuritySettings extends DashboardFragment { diff --git a/Patches/LineageOS-17.1/android_packages_apps_Settings/0009-exec_spawning_toggle.patch b/Patches/LineageOS-17.1/android_packages_apps_Settings/0009-exec_spawning_toggle.patch index 6327853e..dd3e168c 100644 --- a/Patches/LineageOS-17.1/android_packages_apps_Settings/0009-exec_spawning_toggle.patch +++ b/Patches/LineageOS-17.1/android_packages_apps_Settings/0009-exec_spawning_toggle.patch @@ -12,7 +12,7 @@ Subject: [PATCH] add exec spawning toggle create mode 100644 src/com/android/settings/security/ExecSpawnPreferenceController.java diff --git a/res/values/strings.xml b/res/values/strings.xml -index d965a63b0d..e7dcf62ddc 100644 +index d965a63b0d5..e7dcf62ddc3 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -11316,6 +11316,8 @@ @@ -25,7 +25,7 @@ index d965a63b0d..e7dcf62ddc 100644 Generate useful logs / bug reports from crashes and permit debugging native code. diff --git a/res/xml/security_dashboard_settings.xml b/res/xml/security_dashboard_settings.xml -index 2c7b006f8b..08328ad7b6 100644 +index 2c7b006f8bb..08328ad7b62 100644 --- a/res/xml/security_dashboard_settings.xml +++ b/res/xml/security_dashboard_settings.xml @@ -64,6 +64,12 @@ @@ -43,7 +43,7 @@ index 2c7b006f8b..08328ad7b6 100644 android:title="@string/native_debug_title" diff --git a/src/com/android/settings/security/ExecSpawnPreferenceController.java b/src/com/android/settings/security/ExecSpawnPreferenceController.java new file mode 100644 -index 0000000000..98cc3c29e1 +index 00000000000..98cc3c29e12 --- /dev/null +++ b/src/com/android/settings/security/ExecSpawnPreferenceController.java @@ -0,0 +1,106 @@ @@ -154,7 +154,7 @@ index 0000000000..98cc3c29e1 + } +} diff --git a/src/com/android/settings/security/SecuritySettings.java b/src/com/android/settings/security/SecuritySettings.java -index 7aa126b75c..a5e0add739 100644 +index 7aa126b75c7..a5e0add739b 100644 --- a/src/com/android/settings/security/SecuritySettings.java +++ b/src/com/android/settings/security/SecuritySettings.java @@ -121,6 +121,7 @@ public class SecuritySettings extends DashboardFragment { diff --git a/Patches/LineageOS-17.1/android_packages_apps_Settings/0010-Random_MAC-1.patch b/Patches/LineageOS-17.1/android_packages_apps_Settings/0010-Random_MAC-1.patch index 068b072a..faab8abb 100644 --- a/Patches/LineageOS-17.1/android_packages_apps_Settings/0010-Random_MAC-1.patch +++ b/Patches/LineageOS-17.1/android_packages_apps_Settings/0010-Random_MAC-1.patch @@ -11,7 +11,7 @@ RANDOMIZATION_ALWAYS is set as the default option 3 files changed, 29 insertions(+), 9 deletions(-) diff --git a/res/values/arrays.xml b/res/values/arrays.xml -index 0a9a9a31e8..6d95bcc58b 100644 +index 0a9a9a31e82..6d95bcc58b0 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -1239,7 +1239,8 @@ @@ -33,7 +33,7 @@ index 0a9a9a31e8..6d95bcc58b 100644 0 diff --git a/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java b/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java -index afcf883fb6..ce45108f22 100644 +index afcf883fb68..ce45108f22e 100644 --- a/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java +++ b/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java @@ -700,7 +700,8 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController @@ -47,7 +47,7 @@ index afcf883fb6..ce45108f22 100644 } diff --git a/src/com/android/settings/wifi/details/WifiPrivacyPreferenceController.java b/src/com/android/settings/wifi/details/WifiPrivacyPreferenceController.java -index 950cc131f4..1ed9646a7f 100644 +index 950cc131f4a..1ed9646a7f3 100644 --- a/src/com/android/settings/wifi/details/WifiPrivacyPreferenceController.java +++ b/src/com/android/settings/wifi/details/WifiPrivacyPreferenceController.java @@ -112,11 +112,12 @@ public class WifiPrivacyPreferenceController extends BasePreferenceController im diff --git a/Patches/LineageOS-17.1/android_packages_apps_Settings/0010-Random_MAC-2.patch b/Patches/LineageOS-17.1/android_packages_apps_Settings/0010-Random_MAC-2.patch index 09eb5897..5234bb0f 100644 --- a/Patches/LineageOS-17.1/android_packages_apps_Settings/0010-Random_MAC-2.patch +++ b/Patches/LineageOS-17.1/android_packages_apps_Settings/0010-Random_MAC-2.patch @@ -92,7 +92,7 @@ Subject: [PATCH] removed all translations for wifi MAC privacy setting 85 files changed, 340 deletions(-) diff --git a/res/values-af/arrays.xml b/res/values-af/arrays.xml -index c8b0d47563..1ab2da3cc3 100644 +index c8b0d47563b..1ab2da3cc3b 100644 --- a/res/values-af/arrays.xml +++ b/res/values-af/arrays.xml @@ -475,10 +475,6 @@ @@ -107,7 +107,7 @@ index c8b0d47563..1ab2da3cc3 100644 "Nee" "Ja" diff --git a/res/values-am/arrays.xml b/res/values-am/arrays.xml -index 722b48c403..a89588e031 100644 +index 722b48c403b..a89588e0311 100644 --- a/res/values-am/arrays.xml +++ b/res/values-am/arrays.xml @@ -475,10 +475,6 @@ @@ -122,7 +122,7 @@ index 722b48c403..a89588e031 100644 "አይ" "አዎ" diff --git a/res/values-ar/arrays.xml b/res/values-ar/arrays.xml -index f6e693ff1c..97c0a846f2 100644 +index f6e693ff1cb..97c0a846f24 100644 --- a/res/values-ar/arrays.xml +++ b/res/values-ar/arrays.xml @@ -475,10 +475,6 @@ @@ -137,7 +137,7 @@ index f6e693ff1c..97c0a846f2 100644 "لا" "نعم" diff --git a/res/values-as/arrays.xml b/res/values-as/arrays.xml -index 07c7b3d6f6..7f17397335 100644 +index 07c7b3d6f6a..7f173973350 100644 --- a/res/values-as/arrays.xml +++ b/res/values-as/arrays.xml @@ -475,10 +475,6 @@ @@ -152,7 +152,7 @@ index 07c7b3d6f6..7f17397335 100644 "নহয়" "হয়" diff --git a/res/values-az/arrays.xml b/res/values-az/arrays.xml -index 1e8758f029..fb99ada256 100644 +index 1e8758f0292..fb99ada2567 100644 --- a/res/values-az/arrays.xml +++ b/res/values-az/arrays.xml @@ -475,10 +475,6 @@ @@ -167,7 +167,7 @@ index 1e8758f029..fb99ada256 100644 "Xeyr" "Bəli" diff --git a/res/values-b+sr+Latn/arrays.xml b/res/values-b+sr+Latn/arrays.xml -index b355390ac1..de326aec49 100644 +index b355390ac1e..de326aec49a 100644 --- a/res/values-b+sr+Latn/arrays.xml +++ b/res/values-b+sr+Latn/arrays.xml @@ -475,10 +475,6 @@ @@ -182,7 +182,7 @@ index b355390ac1..de326aec49 100644 "Ne" "Da" diff --git a/res/values-be/arrays.xml b/res/values-be/arrays.xml -index e1038b94fd..b455b0ea48 100644 +index e1038b94fd6..b455b0ea483 100644 --- a/res/values-be/arrays.xml +++ b/res/values-be/arrays.xml @@ -475,10 +475,6 @@ @@ -197,7 +197,7 @@ index e1038b94fd..b455b0ea48 100644 "Не" "Так" diff --git a/res/values-bg/arrays.xml b/res/values-bg/arrays.xml -index f37eceaf6d..c651876a73 100644 +index f37eceaf6d4..c651876a731 100644 --- a/res/values-bg/arrays.xml +++ b/res/values-bg/arrays.xml @@ -475,10 +475,6 @@ @@ -212,7 +212,7 @@ index f37eceaf6d..c651876a73 100644 "Не" "Да" diff --git a/res/values-bn/arrays.xml b/res/values-bn/arrays.xml -index f14398a328..d4a3e68637 100644 +index f14398a3284..d4a3e68637a 100644 --- a/res/values-bn/arrays.xml +++ b/res/values-bn/arrays.xml @@ -475,10 +475,6 @@ @@ -227,7 +227,7 @@ index f14398a328..d4a3e68637 100644 "না" "হ্যাঁ" diff --git a/res/values-bs/arrays.xml b/res/values-bs/arrays.xml -index 365473e269..52ecd63c5c 100644 +index 365473e2690..52ecd63c5c0 100644 --- a/res/values-bs/arrays.xml +++ b/res/values-bs/arrays.xml @@ -475,10 +475,6 @@ @@ -242,7 +242,7 @@ index 365473e269..52ecd63c5c 100644 "Ne" "Da" diff --git a/res/values-ca/arrays.xml b/res/values-ca/arrays.xml -index 81e9f83fef..24b886f213 100644 +index 81e9f83fef8..24b886f213b 100644 --- a/res/values-ca/arrays.xml +++ b/res/values-ca/arrays.xml @@ -475,10 +475,6 @@ @@ -257,7 +257,7 @@ index 81e9f83fef..24b886f213 100644 "No" "Sí" diff --git a/res/values-cs/arrays.xml b/res/values-cs/arrays.xml -index f44b947198..652f2bbf9c 100644 +index f44b947198e..652f2bbf9cb 100644 --- a/res/values-cs/arrays.xml +++ b/res/values-cs/arrays.xml @@ -475,10 +475,6 @@ @@ -272,7 +272,7 @@ index f44b947198..652f2bbf9c 100644 "Ne" "Ano" diff --git a/res/values-da/arrays.xml b/res/values-da/arrays.xml -index fd4e58d030..692ef9c8b4 100644 +index fd4e58d030b..692ef9c8b4d 100644 --- a/res/values-da/arrays.xml +++ b/res/values-da/arrays.xml @@ -475,10 +475,6 @@ @@ -287,7 +287,7 @@ index fd4e58d030..692ef9c8b4 100644 "Nej" "Ja" diff --git a/res/values-de/arrays.xml b/res/values-de/arrays.xml -index 886c9f68f4..3524eb9ccd 100644 +index 886c9f68f42..3524eb9ccd5 100644 --- a/res/values-de/arrays.xml +++ b/res/values-de/arrays.xml @@ -475,10 +475,6 @@ @@ -302,7 +302,7 @@ index 886c9f68f4..3524eb9ccd 100644 "Nein" "Ja" diff --git a/res/values-el/arrays.xml b/res/values-el/arrays.xml -index 6b4a697877..d7cbe3f017 100644 +index 6b4a6978773..d7cbe3f017e 100644 --- a/res/values-el/arrays.xml +++ b/res/values-el/arrays.xml @@ -475,10 +475,6 @@ @@ -317,7 +317,7 @@ index 6b4a697877..d7cbe3f017 100644 "Όχι" "Ναι" diff --git a/res/values-en-rAU/arrays.xml b/res/values-en-rAU/arrays.xml -index 62498e8cbf..3684d540c4 100644 +index 62498e8cbf7..3684d540c4a 100644 --- a/res/values-en-rAU/arrays.xml +++ b/res/values-en-rAU/arrays.xml @@ -475,10 +475,6 @@ @@ -332,7 +332,7 @@ index 62498e8cbf..3684d540c4 100644 "No" "Yes" diff --git a/res/values-en-rCA/arrays.xml b/res/values-en-rCA/arrays.xml -index 62498e8cbf..3684d540c4 100644 +index 62498e8cbf7..3684d540c4a 100644 --- a/res/values-en-rCA/arrays.xml +++ b/res/values-en-rCA/arrays.xml @@ -475,10 +475,6 @@ @@ -347,7 +347,7 @@ index 62498e8cbf..3684d540c4 100644 "No" "Yes" diff --git a/res/values-en-rGB/arrays.xml b/res/values-en-rGB/arrays.xml -index 62498e8cbf..3684d540c4 100644 +index 62498e8cbf7..3684d540c4a 100644 --- a/res/values-en-rGB/arrays.xml +++ b/res/values-en-rGB/arrays.xml @@ -475,10 +475,6 @@ @@ -362,7 +362,7 @@ index 62498e8cbf..3684d540c4 100644 "No" "Yes" diff --git a/res/values-en-rIN/arrays.xml b/res/values-en-rIN/arrays.xml -index 62498e8cbf..3684d540c4 100644 +index 62498e8cbf7..3684d540c4a 100644 --- a/res/values-en-rIN/arrays.xml +++ b/res/values-en-rIN/arrays.xml @@ -475,10 +475,6 @@ @@ -377,7 +377,7 @@ index 62498e8cbf..3684d540c4 100644 "No" "Yes" diff --git a/res/values-en-rXC/arrays.xml b/res/values-en-rXC/arrays.xml -index 1faec9168a..3762c105b5 100644 +index 1faec9168ad..3762c105b58 100644 --- a/res/values-en-rXC/arrays.xml +++ b/res/values-en-rXC/arrays.xml @@ -475,10 +475,6 @@ @@ -392,7 +392,7 @@ index 1faec9168a..3762c105b5 100644 "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‎‏‏‏‎‎‏‎‏‏‏‏‏‏‏‏‎‏‏‎‏‎‎‏‎‎‏‎‏‏‏‏‏‏‏‏‎‎‏‎‎‎‏‎‎‎‎‏‏‎‏‏‏‏‎‏‏‎‎‏‏‎‎No‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‏‎‎‏‎‏‏‎‏‏‏‏‏‎‎‏‎‎‎‏‎‎‏‏‎‏‎‎‏‎‏‏‎‏‏‎‎‎‏‏‎‏‏‎‎‎Yes‎‏‎‎‏‎" diff --git a/res/values-es-rUS/arrays.xml b/res/values-es-rUS/arrays.xml -index b5cee26ce1..8052f71290 100644 +index b5cee26ce1d..8052f71290c 100644 --- a/res/values-es-rUS/arrays.xml +++ b/res/values-es-rUS/arrays.xml @@ -475,10 +475,6 @@ @@ -407,7 +407,7 @@ index b5cee26ce1..8052f71290 100644 "No" "Sí" diff --git a/res/values-es/arrays.xml b/res/values-es/arrays.xml -index d60f164a55..24021bc2f0 100644 +index d60f164a55f..24021bc2f04 100644 --- a/res/values-es/arrays.xml +++ b/res/values-es/arrays.xml @@ -475,10 +475,6 @@ @@ -422,7 +422,7 @@ index d60f164a55..24021bc2f0 100644 "No" "Sí" diff --git a/res/values-et/arrays.xml b/res/values-et/arrays.xml -index 0836f3a438..17e9768f60 100644 +index 0836f3a4380..17e9768f609 100644 --- a/res/values-et/arrays.xml +++ b/res/values-et/arrays.xml @@ -475,10 +475,6 @@ @@ -437,7 +437,7 @@ index 0836f3a438..17e9768f60 100644 "Ei" "Jah" diff --git a/res/values-eu/arrays.xml b/res/values-eu/arrays.xml -index 5924a7c5f7..628c00ffd8 100644 +index 5924a7c5f7c..628c00ffd86 100644 --- a/res/values-eu/arrays.xml +++ b/res/values-eu/arrays.xml @@ -475,10 +475,6 @@ @@ -452,7 +452,7 @@ index 5924a7c5f7..628c00ffd8 100644 "Ez" "Bai" diff --git a/res/values-fa/arrays.xml b/res/values-fa/arrays.xml -index a44cefd482..4e4e7f30c5 100644 +index a44cefd4822..4e4e7f30c57 100644 --- a/res/values-fa/arrays.xml +++ b/res/values-fa/arrays.xml @@ -475,10 +475,6 @@ @@ -467,7 +467,7 @@ index a44cefd482..4e4e7f30c5 100644 "نه" "بله" diff --git a/res/values-fi/arrays.xml b/res/values-fi/arrays.xml -index 98f0d4db0f..91728473d2 100644 +index 98f0d4db0f0..91728473d26 100644 --- a/res/values-fi/arrays.xml +++ b/res/values-fi/arrays.xml @@ -475,10 +475,6 @@ @@ -482,7 +482,7 @@ index 98f0d4db0f..91728473d2 100644 "Ei" "Kyllä" diff --git a/res/values-fr-rCA/arrays.xml b/res/values-fr-rCA/arrays.xml -index ea4cb2d274..36d8a77dfa 100644 +index ea4cb2d2749..36d8a77dfa0 100644 --- a/res/values-fr-rCA/arrays.xml +++ b/res/values-fr-rCA/arrays.xml @@ -475,10 +475,6 @@ @@ -497,7 +497,7 @@ index ea4cb2d274..36d8a77dfa 100644 "Non" "Oui" diff --git a/res/values-fr/arrays.xml b/res/values-fr/arrays.xml -index 2673a8f532..7bfea30840 100644 +index 2673a8f5329..7bfea30840d 100644 --- a/res/values-fr/arrays.xml +++ b/res/values-fr/arrays.xml @@ -475,10 +475,6 @@ @@ -512,7 +512,7 @@ index 2673a8f532..7bfea30840 100644 "Non" "Oui" diff --git a/res/values-gl/arrays.xml b/res/values-gl/arrays.xml -index eab6c49f03..5085226822 100644 +index eab6c49f03e..5085226822c 100644 --- a/res/values-gl/arrays.xml +++ b/res/values-gl/arrays.xml @@ -475,10 +475,6 @@ @@ -527,7 +527,7 @@ index eab6c49f03..5085226822 100644 "Non" "Si" diff --git a/res/values-gu/arrays.xml b/res/values-gu/arrays.xml -index ece9976bcf..51ea73284d 100644 +index ece9976bcfd..51ea73284d9 100644 --- a/res/values-gu/arrays.xml +++ b/res/values-gu/arrays.xml @@ -475,10 +475,6 @@ @@ -542,7 +542,7 @@ index ece9976bcf..51ea73284d 100644 "ના" "હા" diff --git a/res/values-hi/arrays.xml b/res/values-hi/arrays.xml -index b0b1aedaba..a3eb3167a9 100644 +index b0b1aedaba0..a3eb3167a9f 100644 --- a/res/values-hi/arrays.xml +++ b/res/values-hi/arrays.xml @@ -475,10 +475,6 @@ @@ -557,7 +557,7 @@ index b0b1aedaba..a3eb3167a9 100644 "नहीं" "हां" diff --git a/res/values-hr/arrays.xml b/res/values-hr/arrays.xml -index 2a865b6e30..1fd6bd79c8 100644 +index 2a865b6e306..1fd6bd79c8a 100644 --- a/res/values-hr/arrays.xml +++ b/res/values-hr/arrays.xml @@ -475,10 +475,6 @@ @@ -572,7 +572,7 @@ index 2a865b6e30..1fd6bd79c8 100644 "Ne" "Da" diff --git a/res/values-hu/arrays.xml b/res/values-hu/arrays.xml -index 1cee4db941..fb7893d70e 100644 +index 1cee4db9416..fb7893d70e2 100644 --- a/res/values-hu/arrays.xml +++ b/res/values-hu/arrays.xml @@ -475,10 +475,6 @@ @@ -587,7 +587,7 @@ index 1cee4db941..fb7893d70e 100644 "Nem" "Igen" diff --git a/res/values-hy/arrays.xml b/res/values-hy/arrays.xml -index a31975ca6b..8815456dec 100644 +index a31975ca6bc..8815456dec9 100644 --- a/res/values-hy/arrays.xml +++ b/res/values-hy/arrays.xml @@ -475,10 +475,6 @@ @@ -602,7 +602,7 @@ index a31975ca6b..8815456dec 100644 "Ոչ" "Այո" diff --git a/res/values-in/arrays.xml b/res/values-in/arrays.xml -index 5cad411615..a9a4803355 100644 +index 5cad4116156..a9a48033550 100644 --- a/res/values-in/arrays.xml +++ b/res/values-in/arrays.xml @@ -475,10 +475,6 @@ @@ -617,7 +617,7 @@ index 5cad411615..a9a4803355 100644 "Tidak" "Ya" diff --git a/res/values-is/arrays.xml b/res/values-is/arrays.xml -index 135aee5854..07f5265219 100644 +index 135aee58543..07f52652190 100644 --- a/res/values-is/arrays.xml +++ b/res/values-is/arrays.xml @@ -475,10 +475,6 @@ @@ -632,7 +632,7 @@ index 135aee5854..07f5265219 100644 "Nei" "Já" diff --git a/res/values-it/arrays.xml b/res/values-it/arrays.xml -index fa9f8a5c7e..43e0493159 100644 +index fa9f8a5c7e3..43e04931595 100644 --- a/res/values-it/arrays.xml +++ b/res/values-it/arrays.xml @@ -475,10 +475,6 @@ @@ -647,7 +647,7 @@ index fa9f8a5c7e..43e0493159 100644 "No" "Sì" diff --git a/res/values-iw/arrays.xml b/res/values-iw/arrays.xml -index 6e699a5943..d5b6c1bb18 100644 +index 6e699a59438..d5b6c1bb18c 100644 --- a/res/values-iw/arrays.xml +++ b/res/values-iw/arrays.xml @@ -475,10 +475,6 @@ @@ -662,7 +662,7 @@ index 6e699a5943..d5b6c1bb18 100644 "לא" "כן" diff --git a/res/values-ja/arrays.xml b/res/values-ja/arrays.xml -index ec6032a37b..0eed2ba98f 100644 +index ec6032a37be..0eed2ba98fb 100644 --- a/res/values-ja/arrays.xml +++ b/res/values-ja/arrays.xml @@ -475,10 +475,6 @@ @@ -677,7 +677,7 @@ index ec6032a37b..0eed2ba98f 100644 "いいえ" "はい" diff --git a/res/values-ka/arrays.xml b/res/values-ka/arrays.xml -index 5a5ddf40dc..26c952765c 100644 +index 5a5ddf40dca..26c952765cd 100644 --- a/res/values-ka/arrays.xml +++ b/res/values-ka/arrays.xml @@ -475,10 +475,6 @@ @@ -692,7 +692,7 @@ index 5a5ddf40dc..26c952765c 100644 "არა" "დიახ" diff --git a/res/values-kk/arrays.xml b/res/values-kk/arrays.xml -index 296f53f2c0..17eb66ed83 100644 +index 296f53f2c00..17eb66ed83f 100644 --- a/res/values-kk/arrays.xml +++ b/res/values-kk/arrays.xml @@ -475,10 +475,6 @@ @@ -707,7 +707,7 @@ index 296f53f2c0..17eb66ed83 100644 "Жоқ" "Иә" diff --git a/res/values-km/arrays.xml b/res/values-km/arrays.xml -index c8ccd75d46..0f3e9543e7 100644 +index c8ccd75d46f..0f3e9543e79 100644 --- a/res/values-km/arrays.xml +++ b/res/values-km/arrays.xml @@ -475,10 +475,6 @@ @@ -722,7 +722,7 @@ index c8ccd75d46..0f3e9543e7 100644 "ទេ" "បាទ/ចាស" diff --git a/res/values-kn/arrays.xml b/res/values-kn/arrays.xml -index 4cf184bc0e..84e36ff71f 100644 +index 4cf184bc0ec..84e36ff71f4 100644 --- a/res/values-kn/arrays.xml +++ b/res/values-kn/arrays.xml @@ -475,10 +475,6 @@ @@ -737,7 +737,7 @@ index 4cf184bc0e..84e36ff71f 100644 "ಇಲ್ಲ" "ಹೌದು" diff --git a/res/values-ko/arrays.xml b/res/values-ko/arrays.xml -index ebaf3c0ba3..c4156fe1a4 100644 +index ebaf3c0ba30..c4156fe1a4d 100644 --- a/res/values-ko/arrays.xml +++ b/res/values-ko/arrays.xml @@ -475,10 +475,6 @@ @@ -752,7 +752,7 @@ index ebaf3c0ba3..c4156fe1a4 100644 "아니요" "예" diff --git a/res/values-ky/arrays.xml b/res/values-ky/arrays.xml -index 165f2c6b33..17e8bae37e 100644 +index 165f2c6b338..17e8bae37e2 100644 --- a/res/values-ky/arrays.xml +++ b/res/values-ky/arrays.xml @@ -475,10 +475,6 @@ @@ -767,7 +767,7 @@ index 165f2c6b33..17e8bae37e 100644 "Жок" "Ооба" diff --git a/res/values-lo/arrays.xml b/res/values-lo/arrays.xml -index 48d3bd9b83..f1373922b6 100644 +index 48d3bd9b838..f1373922b68 100644 --- a/res/values-lo/arrays.xml +++ b/res/values-lo/arrays.xml @@ -475,10 +475,6 @@ @@ -782,7 +782,7 @@ index 48d3bd9b83..f1373922b6 100644 "ບໍ່" "ແມ່ນ" diff --git a/res/values-lt/arrays.xml b/res/values-lt/arrays.xml -index bf9dbe19a2..324451d99b 100644 +index bf9dbe19a22..324451d99b4 100644 --- a/res/values-lt/arrays.xml +++ b/res/values-lt/arrays.xml @@ -475,10 +475,6 @@ @@ -797,7 +797,7 @@ index bf9dbe19a2..324451d99b 100644 "Ne" "Taip" diff --git a/res/values-lv/arrays.xml b/res/values-lv/arrays.xml -index 0463c08d65..c3c2cdd6a2 100644 +index 0463c08d65d..c3c2cdd6a2e 100644 --- a/res/values-lv/arrays.xml +++ b/res/values-lv/arrays.xml @@ -475,10 +475,6 @@ @@ -812,7 +812,7 @@ index 0463c08d65..c3c2cdd6a2 100644 "Nē" "Jā" diff --git a/res/values-mk/arrays.xml b/res/values-mk/arrays.xml -index f4fb3d37d2..6614a5dd30 100644 +index f4fb3d37d2a..6614a5dd300 100644 --- a/res/values-mk/arrays.xml +++ b/res/values-mk/arrays.xml @@ -475,10 +475,6 @@ @@ -827,7 +827,7 @@ index f4fb3d37d2..6614a5dd30 100644 "Не" "Да" diff --git a/res/values-ml/arrays.xml b/res/values-ml/arrays.xml -index 90f5e2de07..48bef28038 100644 +index 90f5e2de07f..48bef28038c 100644 --- a/res/values-ml/arrays.xml +++ b/res/values-ml/arrays.xml @@ -475,10 +475,6 @@ @@ -842,7 +842,7 @@ index 90f5e2de07..48bef28038 100644 "ഇല്ല" "ഉവ്വ്" diff --git a/res/values-mn/arrays.xml b/res/values-mn/arrays.xml -index 0fc94feb47..29aa5258f9 100644 +index 0fc94feb47e..29aa5258f9d 100644 --- a/res/values-mn/arrays.xml +++ b/res/values-mn/arrays.xml @@ -475,10 +475,6 @@ @@ -857,7 +857,7 @@ index 0fc94feb47..29aa5258f9 100644 "Үгүй" "Тийм" diff --git a/res/values-mr/arrays.xml b/res/values-mr/arrays.xml -index 19eed5bd5b..dfd860952c 100644 +index 19eed5bd5be..dfd860952c7 100644 --- a/res/values-mr/arrays.xml +++ b/res/values-mr/arrays.xml @@ -475,10 +475,6 @@ @@ -872,7 +872,7 @@ index 19eed5bd5b..dfd860952c 100644 "नाही" "होय" diff --git a/res/values-ms/arrays.xml b/res/values-ms/arrays.xml -index 7a61cb0473..e9db095279 100644 +index 7a61cb0473d..e9db0952792 100644 --- a/res/values-ms/arrays.xml +++ b/res/values-ms/arrays.xml @@ -475,10 +475,6 @@ @@ -887,7 +887,7 @@ index 7a61cb0473..e9db095279 100644 "Tidak" "Ya" diff --git a/res/values-my/arrays.xml b/res/values-my/arrays.xml -index 60eb09db46..0a48a4fdcf 100644 +index 60eb09db465..0a48a4fdcf0 100644 --- a/res/values-my/arrays.xml +++ b/res/values-my/arrays.xml @@ -475,10 +475,6 @@ @@ -902,7 +902,7 @@ index 60eb09db46..0a48a4fdcf 100644 "No" "Yes" diff --git a/res/values-nb/arrays.xml b/res/values-nb/arrays.xml -index 73f2b60d75..0a848af8c2 100644 +index 73f2b60d75f..0a848af8c2b 100644 --- a/res/values-nb/arrays.xml +++ b/res/values-nb/arrays.xml @@ -475,10 +475,6 @@ @@ -917,7 +917,7 @@ index 73f2b60d75..0a848af8c2 100644 "Nei" "Ja" diff --git a/res/values-ne/arrays.xml b/res/values-ne/arrays.xml -index 3f4810694d..f7d966ac45 100644 +index 3f4810694d7..f7d966ac450 100644 --- a/res/values-ne/arrays.xml +++ b/res/values-ne/arrays.xml @@ -475,10 +475,6 @@ @@ -932,7 +932,7 @@ index 3f4810694d..f7d966ac45 100644 "होइन" "हो" diff --git a/res/values-nl/arrays.xml b/res/values-nl/arrays.xml -index ae3fbb3286..fc48746a6a 100644 +index ae3fbb32869..fc48746a6a3 100644 --- a/res/values-nl/arrays.xml +++ b/res/values-nl/arrays.xml @@ -475,10 +475,6 @@ @@ -947,7 +947,7 @@ index ae3fbb3286..fc48746a6a 100644 "Nee" "Ja" diff --git a/res/values-or/arrays.xml b/res/values-or/arrays.xml -index cb53759887..11469a960e 100644 +index cb53759887f..11469a960e5 100644 --- a/res/values-or/arrays.xml +++ b/res/values-or/arrays.xml @@ -475,10 +475,6 @@ @@ -962,7 +962,7 @@ index cb53759887..11469a960e 100644 "ନା" "ହଁ" diff --git a/res/values-pa/arrays.xml b/res/values-pa/arrays.xml -index 9ab1d808bc..19a251fb80 100644 +index 9ab1d808bc8..19a251fb80d 100644 --- a/res/values-pa/arrays.xml +++ b/res/values-pa/arrays.xml @@ -475,10 +475,6 @@ @@ -977,7 +977,7 @@ index 9ab1d808bc..19a251fb80 100644 "ਨਹੀਂ" "ਹਾਂ" diff --git a/res/values-pl/arrays.xml b/res/values-pl/arrays.xml -index 1b0f899fcb..ca2b43b031 100644 +index 1b0f899fcbd..ca2b43b0313 100644 --- a/res/values-pl/arrays.xml +++ b/res/values-pl/arrays.xml @@ -475,10 +475,6 @@ @@ -992,7 +992,7 @@ index 1b0f899fcb..ca2b43b031 100644 "Nie" "Tak" diff --git a/res/values-pt-rBR/arrays.xml b/res/values-pt-rBR/arrays.xml -index 0cb0d0c1ee..6bbd0c3d35 100644 +index 0cb0d0c1ee6..6bbd0c3d35c 100644 --- a/res/values-pt-rBR/arrays.xml +++ b/res/values-pt-rBR/arrays.xml @@ -475,10 +475,6 @@ @@ -1007,7 +1007,7 @@ index 0cb0d0c1ee..6bbd0c3d35 100644 "Não" "Sim" diff --git a/res/values-pt-rPT/arrays.xml b/res/values-pt-rPT/arrays.xml -index aec6985e28..953ce83cb7 100644 +index aec6985e280..953ce83cb71 100644 --- a/res/values-pt-rPT/arrays.xml +++ b/res/values-pt-rPT/arrays.xml @@ -475,10 +475,6 @@ @@ -1022,7 +1022,7 @@ index aec6985e28..953ce83cb7 100644 "Não" "Sim" diff --git a/res/values-pt/arrays.xml b/res/values-pt/arrays.xml -index 0cb0d0c1ee..6bbd0c3d35 100644 +index 0cb0d0c1ee6..6bbd0c3d35c 100644 --- a/res/values-pt/arrays.xml +++ b/res/values-pt/arrays.xml @@ -475,10 +475,6 @@ @@ -1037,7 +1037,7 @@ index 0cb0d0c1ee..6bbd0c3d35 100644 "Não" "Sim" diff --git a/res/values-ro/arrays.xml b/res/values-ro/arrays.xml -index f12e145e4d..d31680423b 100644 +index f12e145e4dc..d31680423b6 100644 --- a/res/values-ro/arrays.xml +++ b/res/values-ro/arrays.xml @@ -475,10 +475,6 @@ @@ -1052,7 +1052,7 @@ index f12e145e4d..d31680423b 100644 "Nu" "Da" diff --git a/res/values-ru/arrays.xml b/res/values-ru/arrays.xml -index ac5e085dc1..4f3f001d52 100644 +index ac5e085dc10..4f3f001d52f 100644 --- a/res/values-ru/arrays.xml +++ b/res/values-ru/arrays.xml @@ -475,10 +475,6 @@ @@ -1067,7 +1067,7 @@ index ac5e085dc1..4f3f001d52 100644 "Нет" "Да" diff --git a/res/values-si/arrays.xml b/res/values-si/arrays.xml -index 67c9a97f09..967ab1847a 100644 +index 67c9a97f091..967ab1847ab 100644 --- a/res/values-si/arrays.xml +++ b/res/values-si/arrays.xml @@ -475,10 +475,6 @@ @@ -1082,7 +1082,7 @@ index 67c9a97f09..967ab1847a 100644 "නැත" "ඔව්" diff --git a/res/values-sk/arrays.xml b/res/values-sk/arrays.xml -index 639e8faafa..b4bceee991 100644 +index 639e8faafa7..b4bceee9912 100644 --- a/res/values-sk/arrays.xml +++ b/res/values-sk/arrays.xml @@ -475,10 +475,6 @@ @@ -1097,7 +1097,7 @@ index 639e8faafa..b4bceee991 100644 "Nie" "Áno" diff --git a/res/values-sl/arrays.xml b/res/values-sl/arrays.xml -index 31ff81fef9..4bc9cf638e 100644 +index 31ff81fef93..4bc9cf638e7 100644 --- a/res/values-sl/arrays.xml +++ b/res/values-sl/arrays.xml @@ -475,10 +475,6 @@ @@ -1112,7 +1112,7 @@ index 31ff81fef9..4bc9cf638e 100644 "Ne" "Da" diff --git a/res/values-sq/arrays.xml b/res/values-sq/arrays.xml -index 5a9fde5c17..fe8b19cf2b 100644 +index 5a9fde5c178..fe8b19cf2bb 100644 --- a/res/values-sq/arrays.xml +++ b/res/values-sq/arrays.xml @@ -475,10 +475,6 @@ @@ -1127,7 +1127,7 @@ index 5a9fde5c17..fe8b19cf2b 100644 "Jo" "Po" diff --git a/res/values-sr/arrays.xml b/res/values-sr/arrays.xml -index 1c975e04c8..8308828975 100644 +index 1c975e04c8e..83088289757 100644 --- a/res/values-sr/arrays.xml +++ b/res/values-sr/arrays.xml @@ -475,10 +475,6 @@ @@ -1142,7 +1142,7 @@ index 1c975e04c8..8308828975 100644 "Не" "Да" diff --git a/res/values-sv/arrays.xml b/res/values-sv/arrays.xml -index 00c54a0cb6..95a2a40c9c 100644 +index 00c54a0cb6a..95a2a40c9ca 100644 --- a/res/values-sv/arrays.xml +++ b/res/values-sv/arrays.xml @@ -475,10 +475,6 @@ @@ -1157,7 +1157,7 @@ index 00c54a0cb6..95a2a40c9c 100644 "Nej" "Ja" diff --git a/res/values-sw/arrays.xml b/res/values-sw/arrays.xml -index 6eed66078e..d9bffc9693 100644 +index 6eed66078e1..d9bffc96938 100644 --- a/res/values-sw/arrays.xml +++ b/res/values-sw/arrays.xml @@ -475,10 +475,6 @@ @@ -1172,7 +1172,7 @@ index 6eed66078e..d9bffc9693 100644 "Hapana" "Ndiyo" diff --git a/res/values-ta/arrays.xml b/res/values-ta/arrays.xml -index 9135fffcfa..f894b9247d 100644 +index 9135fffcfad..f894b9247d0 100644 --- a/res/values-ta/arrays.xml +++ b/res/values-ta/arrays.xml @@ -475,10 +475,6 @@ @@ -1187,7 +1187,7 @@ index 9135fffcfa..f894b9247d 100644 "வேண்டாம்" "ஆம்" diff --git a/res/values-te/arrays.xml b/res/values-te/arrays.xml -index 7c9270691b..fd2f4ce74f 100644 +index 7c9270691b3..fd2f4ce74f7 100644 --- a/res/values-te/arrays.xml +++ b/res/values-te/arrays.xml @@ -475,10 +475,6 @@ @@ -1202,7 +1202,7 @@ index 7c9270691b..fd2f4ce74f 100644 "లేదు" "అవును" diff --git a/res/values-th/arrays.xml b/res/values-th/arrays.xml -index 33fbe3bb8c..723d88c59c 100644 +index 33fbe3bb8c1..723d88c59c7 100644 --- a/res/values-th/arrays.xml +++ b/res/values-th/arrays.xml @@ -475,10 +475,6 @@ @@ -1217,7 +1217,7 @@ index 33fbe3bb8c..723d88c59c 100644 "ไม่" "ใช่" diff --git a/res/values-tl/arrays.xml b/res/values-tl/arrays.xml -index 3d439a67e6..62d500b96f 100644 +index 3d439a67e6e..62d500b96fb 100644 --- a/res/values-tl/arrays.xml +++ b/res/values-tl/arrays.xml @@ -475,10 +475,6 @@ @@ -1232,7 +1232,7 @@ index 3d439a67e6..62d500b96f 100644 "Hindi" "Oo" diff --git a/res/values-tr/arrays.xml b/res/values-tr/arrays.xml -index 080847c4cb..e4f388e05c 100644 +index 080847c4cb8..e4f388e05c5 100644 --- a/res/values-tr/arrays.xml +++ b/res/values-tr/arrays.xml @@ -475,10 +475,6 @@ @@ -1247,7 +1247,7 @@ index 080847c4cb..e4f388e05c 100644 "Hayır" "Evet" diff --git a/res/values-uk/arrays.xml b/res/values-uk/arrays.xml -index 850a400846..c001d9a2a3 100644 +index 850a4008464..c001d9a2a34 100644 --- a/res/values-uk/arrays.xml +++ b/res/values-uk/arrays.xml @@ -475,10 +475,6 @@ @@ -1262,7 +1262,7 @@ index 850a400846..c001d9a2a3 100644 "Ні" "Так" diff --git a/res/values-ur/arrays.xml b/res/values-ur/arrays.xml -index 8b13cf953d..4b377bfc5a 100644 +index 8b13cf953da..4b377bfc5a6 100644 --- a/res/values-ur/arrays.xml +++ b/res/values-ur/arrays.xml @@ -475,10 +475,6 @@ @@ -1277,7 +1277,7 @@ index 8b13cf953d..4b377bfc5a 100644 "نہیں" "ہاں" diff --git a/res/values-uz/arrays.xml b/res/values-uz/arrays.xml -index abe944c792..775149e27c 100644 +index abe944c792d..775149e27ce 100644 --- a/res/values-uz/arrays.xml +++ b/res/values-uz/arrays.xml @@ -475,10 +475,6 @@ @@ -1292,7 +1292,7 @@ index abe944c792..775149e27c 100644 "Yo‘q" "Ha" diff --git a/res/values-vi/arrays.xml b/res/values-vi/arrays.xml -index e54b3bc05c..d988e368a5 100644 +index e54b3bc05ce..d988e368a5d 100644 --- a/res/values-vi/arrays.xml +++ b/res/values-vi/arrays.xml @@ -475,10 +475,6 @@ @@ -1307,7 +1307,7 @@ index e54b3bc05c..d988e368a5 100644 "Không" "Có" diff --git a/res/values-zh-rCN/arrays.xml b/res/values-zh-rCN/arrays.xml -index fffcf47ae6..1b4a951c70 100644 +index fffcf47ae62..1b4a951c701 100644 --- a/res/values-zh-rCN/arrays.xml +++ b/res/values-zh-rCN/arrays.xml @@ -475,10 +475,6 @@ @@ -1322,7 +1322,7 @@ index fffcf47ae6..1b4a951c70 100644 "否" "是" diff --git a/res/values-zh-rHK/arrays.xml b/res/values-zh-rHK/arrays.xml -index 7055620562..9de09cd360 100644 +index 7055620562f..9de09cd360e 100644 --- a/res/values-zh-rHK/arrays.xml +++ b/res/values-zh-rHK/arrays.xml @@ -475,10 +475,6 @@ @@ -1337,7 +1337,7 @@ index 7055620562..9de09cd360 100644 "否" "是" diff --git a/res/values-zh-rTW/arrays.xml b/res/values-zh-rTW/arrays.xml -index 2dd50e6cc8..932faf2958 100644 +index 2dd50e6cc83..932faf2958b 100644 --- a/res/values-zh-rTW/arrays.xml +++ b/res/values-zh-rTW/arrays.xml @@ -475,10 +475,6 @@ @@ -1352,7 +1352,7 @@ index 2dd50e6cc8..932faf2958 100644 "否" "是" diff --git a/res/values-zu/arrays.xml b/res/values-zu/arrays.xml -index 9a31ab4a07..aa7ae71e02 100644 +index 9a31ab4a07b..aa7ae71e02b 100644 --- a/res/values-zu/arrays.xml +++ b/res/values-zu/arrays.xml @@ -475,10 +475,6 @@ diff --git a/Patches/LineageOS-17.1/android_packages_apps_Settings/0011-LTE_Only_Mode.patch b/Patches/LineageOS-17.1/android_packages_apps_Settings/0011-LTE_Only_Mode.patch index 7d2d6166..89c022a3 100644 --- a/Patches/LineageOS-17.1/android_packages_apps_Settings/0011-LTE_Only_Mode.patch +++ b/Patches/LineageOS-17.1/android_packages_apps_Settings/0011-LTE_Only_Mode.patch @@ -15,7 +15,7 @@ Closes https://github.com/GrapheneOS/os_issue_tracker/issues/107 4 files changed, 26 insertions(+), 3 deletions(-) diff --git a/res/values/arrays.xml b/res/values/arrays.xml -index 6d95bcc58b..072004e447 100644 +index 6d95bcc58b0..072004e4474 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -1301,16 +1301,19 @@ @@ -106,7 +106,7 @@ index 6d95bcc58b..072004e447 100644 "18" "1" diff --git a/res/values/strings.xml b/res/values/strings.xml -index e7dcf62ddc..fedb9f3fde 100644 +index e7dcf62ddc3..fedb9f3fdea 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -10942,6 +10942,8 @@ @@ -132,7 +132,7 @@ index e7dcf62ddc..fedb9f3fde 100644 3G diff --git a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java -index b9be4c2f10..d577f9ac55 100644 +index b9be4c2f107..d577f9ac559 100644 --- a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java +++ b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java @@ -438,7 +438,6 @@ public class EnabledNetworkModePreferenceController extends @@ -157,7 +157,7 @@ index b9be4c2f10..d577f9ac55 100644 if (MobileNetworkUtils.isWorldMode(mContext, mSubId)) { preference.setSummary( diff --git a/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceController.java b/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceController.java -index 965fc729d3..3a7261b5b8 100644 +index 965fc729d31..3a7261b5b8f 100644 --- a/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceController.java +++ b/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceController.java @@ -143,7 +143,7 @@ public class PreferredNetworkModePreferenceController extends TelephonyBasePrefe diff --git a/Patches/LineageOS-17.1/android_packages_apps_Settings/0012-hosts_toggle.patch b/Patches/LineageOS-17.1/android_packages_apps_Settings/0012-hosts_toggle.patch index 44750f22..cf595f22 100644 --- a/Patches/LineageOS-17.1/android_packages_apps_Settings/0012-hosts_toggle.patch +++ b/Patches/LineageOS-17.1/android_packages_apps_Settings/0012-hosts_toggle.patch @@ -16,7 +16,7 @@ Change-Id: Ic01a142722372d9d57f52947025cd9db23e58ef4 create mode 100644 src/com/android/settings/security/HostsPreferenceController.java diff --git a/res/values/strings.xml b/res/values/strings.xml -index fedb9f3fde..b5dbdc7d81 100644 +index fedb9f3fdea..b5dbdc7d81f 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -11327,6 +11327,9 @@ @@ -30,7 +30,7 @@ index fedb9f3fde..b5dbdc7d81 100644 Privacy diff --git a/res/xml/security_dashboard_settings.xml b/res/xml/security_dashboard_settings.xml -index 08328ad7b6..23a39d3106 100644 +index 08328ad7b62..23a39d31067 100644 --- a/res/xml/security_dashboard_settings.xml +++ b/res/xml/security_dashboard_settings.xml @@ -75,6 +75,12 @@ @@ -48,7 +48,7 @@ index 08328ad7b6..23a39d3106 100644 diff --git a/src/com/android/settings/security/HostsPreferenceController.java b/src/com/android/settings/security/HostsPreferenceController.java new file mode 100644 -index 0000000000..d8af6d2649 +index 00000000000..d8af6d26490 --- /dev/null +++ b/src/com/android/settings/security/HostsPreferenceController.java @@ -0,0 +1,106 @@ @@ -159,7 +159,7 @@ index 0000000000..d8af6d2649 + } +} diff --git a/src/com/android/settings/security/SecuritySettings.java b/src/com/android/settings/security/SecuritySettings.java -index a5e0add739..88ba2ece3a 100644 +index a5e0add739b..88ba2ece3a2 100644 --- a/src/com/android/settings/security/SecuritySettings.java +++ b/src/com/android/settings/security/SecuritySettings.java @@ -123,6 +123,7 @@ public class SecuritySettings extends DashboardFragment { diff --git a/Patches/LineageOS-17.1/android_packages_apps_Settings/0013-SUPL_Toggle.patch b/Patches/LineageOS-17.1/android_packages_apps_Settings/0013-SUPL_Toggle.patch index f1ef0085..03ee1aff 100644 --- a/Patches/LineageOS-17.1/android_packages_apps_Settings/0013-SUPL_Toggle.patch +++ b/Patches/LineageOS-17.1/android_packages_apps_Settings/0013-SUPL_Toggle.patch @@ -11,7 +11,7 @@ Subject: [PATCH] add a toggle for forcibly disabling SUPL create mode 100644 src/com/android/settings/location/ForceDisableSuplPrefController.java diff --git a/res/values/strings.xml b/res/values/strings.xml -index b5dbdc7d81..a5aab8e5d0 100644 +index b5dbdc7d81f..a5aab8e5d08 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -11517,4 +11517,7 @@ @@ -23,7 +23,7 @@ index b5dbdc7d81..a5aab8e5d0 100644 + Always disable SUPL assisted location support regardless of carrier configuration or emergency call status (does not disable control plane A-GNSS and DivestOS does not send IMSI to the SUPL) diff --git a/res/xml/location_settings.xml b/res/xml/location_settings.xml -index 136e6ab619..ae1a0e0f3e 100644 +index 136e6ab6195..ae1a0e0f3e2 100644 --- a/res/xml/location_settings.xml +++ b/res/xml/location_settings.xml @@ -68,6 +68,12 @@ @@ -41,7 +41,7 @@ index 136e6ab619..ae1a0e0f3e 100644 create mode 100644 src/com/android/settings/security/SigSpoofPreferenceController.java diff --git a/res/values/strings.xml b/res/values/strings.xml -index a5aab8e5d0..85985433c4 100644 +index a5aab8e5d08..85985433c4a 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -11330,6 +11330,9 @@ @@ -30,7 +30,7 @@ index a5aab8e5d0..85985433c4 100644 Privacy diff --git a/res/xml/security_dashboard_settings.xml b/res/xml/security_dashboard_settings.xml -index 23a39d3106..c5a6c8cada 100644 +index 23a39d31067..c5a6c8cadad 100644 --- a/res/xml/security_dashboard_settings.xml +++ b/res/xml/security_dashboard_settings.xml @@ -81,6 +81,12 @@ @@ -47,7 +47,7 @@ index 23a39d3106..c5a6c8cada 100644 diff --git a/src/com/android/settings/security/SecuritySettings.java b/src/com/android/settings/security/SecuritySettings.java -index 88ba2ece3a..3ba3f518b0 100644 +index 88ba2ece3a2..3ba3f518b08 100644 --- a/src/com/android/settings/security/SecuritySettings.java +++ b/src/com/android/settings/security/SecuritySettings.java @@ -124,6 +124,7 @@ public class SecuritySettings extends DashboardFragment { @@ -60,7 +60,7 @@ index 88ba2ece3a..3ba3f518b0 100644 controllers.addAll(securityPreferenceControllers); diff --git a/src/com/android/settings/security/SigSpoofPreferenceController.java b/src/com/android/settings/security/SigSpoofPreferenceController.java new file mode 100644 -index 0000000000..258b59b0b0 +index 00000000000..258b59b0b07 --- /dev/null +++ b/src/com/android/settings/security/SigSpoofPreferenceController.java @@ -0,0 +1,106 @@ diff --git a/Patches/LineageOS-17.1/android_packages_apps_Settings/368069-backport.patch b/Patches/LineageOS-17.1/android_packages_apps_Settings/368069-backport.patch new file mode 100644 index 00000000..9dfa050d --- /dev/null +++ b/Patches/LineageOS-17.1/android_packages_apps_Settings/368069-backport.patch @@ -0,0 +1,129 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Weng Su +Date: Fri, 7 Jul 2023 19:52:04 +0800 +Subject: [PATCH] Restrict ApnEditor settings + +- Finish ApnEditor settings if user is not an admin + +- Finish ApnEditor settings if user has DISALLOW_CONFIG_MOBILE_NETWORKS restriction + +Bug: 279902472 +Test: manual test +make RunSettingsRoboTests ROBOTEST_FILTER=ApnEditorTest +(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:5c2d727b8f9198bf758a4896eda7c9e5385435ff) +Merged-In: Iecdbbff7e21dfb11e3ba385858747a220cfd3e04 +Change-Id: Iecdbbff7e21dfb11e3ba385858747a220cfd3e04 +--- + .../android/settings/network/ApnEditor.java | 23 +++++++++++++++ + .../settings/network/ApnEditorTest.java | 29 +++++++++++++++++++ + 2 files changed, 52 insertions(+) + +diff --git a/src/com/android/settings/network/ApnEditor.java b/src/com/android/settings/network/ApnEditor.java +index 92e689ddd16..cb1c5cce242 100644 +--- a/src/com/android/settings/network/ApnEditor.java ++++ b/src/com/android/settings/network/ApnEditor.java +@@ -27,6 +27,7 @@ import android.database.Cursor; + import android.net.Uri; + import android.os.Bundle; + import android.os.PersistableBundle; ++import android.os.UserManager; + import android.provider.Telephony; + import android.telephony.CarrierConfigManager; + import android.telephony.ServiceState; +@@ -209,6 +210,11 @@ public class ApnEditor extends SettingsPreferenceFragment + @Override + public void onCreate(Bundle icicle) { + super.onCreate(icicle); ++ if (isUserRestricted()) { ++ Log.e(TAG, "This setting isn't available due to user restriction."); ++ finish(); ++ return; ++ } + + addPreferencesFromResource(R.xml.apn_editor); + +@@ -1203,6 +1209,23 @@ public class ApnEditor extends SettingsPreferenceFragment + return userEnteredApnType; + } + ++ @VisibleForTesting ++ boolean isUserRestricted() { ++ UserManager userManager = getContext().getSystemService(UserManager.class); ++ if (userManager == null) { ++ return false; ++ } ++ if (!userManager.isAdminUser()) { ++ Log.e(TAG, "User is not an admin"); ++ return true; ++ } ++ if (userManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS)) { ++ Log.e(TAG, "User is not allowed to configure mobile network"); ++ return true; ++ } ++ return false; ++ } ++ + public static class ErrorDialog extends InstrumentedDialogFragment { + + public static void showError(ApnEditor editor) { +diff --git a/tests/robotests/src/com/android/settings/network/ApnEditorTest.java b/tests/robotests/src/com/android/settings/network/ApnEditorTest.java +index dc14418b596..6251484aad9 100644 +--- a/tests/robotests/src/com/android/settings/network/ApnEditorTest.java ++++ b/tests/robotests/src/com/android/settings/network/ApnEditorTest.java +@@ -33,6 +33,7 @@ import android.content.Context; + import android.content.res.Resources; + import android.database.Cursor; + import android.net.Uri; ++import android.os.UserManager; + import android.view.KeyEvent; + import android.view.Menu; + import android.view.MenuItem; +@@ -101,6 +102,8 @@ public class ApnEditorTest { + + private ApnEditor mApnEditorUT; + private FragmentActivity mActivity; ++ @Mock ++ private UserManager mUserManager; + private Resources mResources; + + @Before +@@ -116,6 +119,11 @@ public class ApnEditorTest { + doNothing().when(mApnEditorUT).showError(); + when(mApnEditorUT.getContext()).thenReturn(RuntimeEnvironment.application); + ++ doReturn(mUserManager).when(mContext).getSystemService(UserManager.class); ++ doReturn(true).when(mUserManager).isAdminUser(); ++ doReturn(false).when(mUserManager) ++ .hasUserRestriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS); ++ + setMockPreference(mActivity); + mApnEditorUT.mApnData = new FakeApnData(APN_DATA); + mApnEditorUT.sNotSet = "Not Set"; +@@ -454,6 +462,27 @@ public class ApnEditorTest { + assertThat(ApnEditor.formatInteger("not an int")).isEqualTo("not an int"); + } + ++ @Test ++ @Config(shadows = ShadowFragment.class) ++ public void onCreate_notAdminUser_shouldFinish() { ++ doReturn(false).when(mUserManager).isAdminUser(); ++ ++ mApnEditorUT.onCreate(null); ++ ++ verify(mApnEditorUT).finish(); ++ } ++ ++ @Test ++ @Config(shadows = ShadowFragment.class) ++ public void onCreate_hasUserRestriction_shouldFinish() { ++ doReturn(true).when(mUserManager) ++ .hasUserRestriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS); ++ ++ mApnEditorUT.onCreate(null); ++ ++ verify(mApnEditorUT).finish(); ++ } ++ + @Test + public void onCreate_noAction_shouldFinishAndNoCrash() { + doNothing().when(mApnEditorUT).addPreferencesFromResource(anyInt()); diff --git a/Patches/LineageOS-17.1/android_packages_services_Telecomm/368072.patch b/Patches/LineageOS-17.1/android_packages_services_Telecomm/368072.patch new file mode 100644 index 00000000..179bedce --- /dev/null +++ b/Patches/LineageOS-17.1/android_packages_services_Telecomm/368072.patch @@ -0,0 +1,48 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Grace Jia +Date: Thu, 20 Jul 2023 13:42:50 -0700 +Subject: [PATCH] Fix vulnerability in CallRedirectionService. + +Currently when the CallRedirectionService binding died, we didn't do +anything, which cause malicious app start activities even not run in the +background by implementing a CallRedirectionService and overriding the +onPlaceCall method to schedule a activity start job in an independent +process and then kill itself. In that way, the activity can still +start after the CallRedirectionService died. Fix this by unbinding the +service when the binding died. + +Bug: b/289809991 +Test: Using testapp provided in bug to make sure the test activity can't +be started +(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:29b52e3cd027da2d8644450a4dee3a7d95dc0043) +Merged-In: I065d361b83700474a1efab2a75928427ee0a14ba +Change-Id: I065d361b83700474a1efab2a75928427ee0a14ba +--- + .../callredirection/CallRedirectionProcessor.java | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +diff --git a/src/com/android/server/telecom/callredirection/CallRedirectionProcessor.java b/src/com/android/server/telecom/callredirection/CallRedirectionProcessor.java +index 5de576ccb..b7c719689 100644 +--- a/src/com/android/server/telecom/callredirection/CallRedirectionProcessor.java ++++ b/src/com/android/server/telecom/callredirection/CallRedirectionProcessor.java +@@ -164,6 +164,20 @@ public class CallRedirectionProcessor implements CallRedirectionCallback { + Log.endSession(); + } + } ++ ++ @Override ++ public void onBindingDied(ComponentName componentName) { ++ // Make sure we unbind the service if binding died to avoid background stating ++ // activity leaks ++ Log.startSession("CRSC.oBD"); ++ try { ++ synchronized (mTelecomLock) { ++ finishCallRedirection(); ++ } ++ } finally { ++ Log.endSession(); ++ } ++ } + } + + private class CallRedirectionAdapter extends ICallRedirectionAdapter.Stub { diff --git a/Scripts/LineageOS-17.1/Patch.sh b/Scripts/LineageOS-17.1/Patch.sh index 2363fb95..6e5b91e4 100644 --- a/Scripts/LineageOS-17.1/Patch.sh +++ b/Scripts/LineageOS-17.1/Patch.sh @@ -98,6 +98,7 @@ sed -i '75i$(my_res_package): PRIVATE_AAPT_FLAGS += --auto-add-overlay' core/aap awk -i inplace '!/updatable_apex.mk/' target/product/mainline_system.mk; #Disable APEX sed -i 's/PLATFORM_MIN_SUPPORTED_TARGET_SDK_VERSION := 23/PLATFORM_MIN_SUPPORTED_TARGET_SDK_VERSION := 28/' core/version_defaults.mk; #Set the minimum supported target SDK to Pie (GrapheneOS) #sed -i 's/PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS := true/PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS := false/' core/product_config.mk; #broken by hardenDefconfig +sed -i 's/2023-09-05/2023-10-05/' core/version_defaults.mk; #Bump Security String #Q_asb_2023-10 #XXX fi; if enterAndClear "build/soong"; then @@ -129,6 +130,10 @@ if enterAndClear "external/libvpx"; then applyPatch "$DOS_PATCHES_COMMON/android_external_libvpx/CVE-2023-5217.patch"; #VP8: disallow thread count changes fi; +if enterAndClear "external/libxml2"; then +applyPatch "$DOS_PATCHES/android_external_libxml2/368053.patch"; #R_asb_2023-10 malloc-fail: Fix OOB read after xmlRegGetCounter +fi; + if enterAndClear "external/svox"; then git revert --no-edit 1419d63b4889a26d22443fd8df1f9073bf229d3d; #Add back Makefiles sed -i '12iLOCAL_SDK_VERSION := current' pico/Android.mk; #Fix build under Pie @@ -141,6 +146,14 @@ git fetch https://github.com/LineageOS/android_external_zlib refs/changes/70/352 fi; if enterAndClear "frameworks/base"; then +applyPatch "$DOS_PATCHES/android_frameworks_base/368055.patch"; #R_asb_2023-10 RingtoneManager: verify default ringtone is audio +applyPatch "$DOS_PATCHES/android_frameworks_base/368059.patch"; #R_asb_2023-10 Do not share key mappings with JNI object +applyPatch "$DOS_PATCHES/android_frameworks_base/368060-backport.patch"; #R_asb_2023-10 Verify URI Permissions in Autofill RemoteViews +applyPatch "$DOS_PATCHES/android_frameworks_base/368061.patch"; #R_asb_2023-10 Fix KCM key mapping cloning +applyPatch "$DOS_PATCHES/android_frameworks_base/368062-backport.patch"; #R_asb_2023-10 Disallow loading icon from content URI to PipMenu +applyPatch "$DOS_PATCHES/android_frameworks_base/368063.patch"; #R_asb_2023-10 Fixing DatabaseUtils to detect malformed UTF-16 strings +#applyPatch "$DOS_PATCHES/android_frameworks_base/368065-backport.patch"; #R_asb_2023-10 SettingsProvider: exclude secure_frp_mode from resets +applyPatch "$DOS_PATCHES/android_frameworks_base/368067.patch"; #R_asb_2023-10 Revert "DO NOT MERGE Dismiss keyguard when simpin auth'd and..." #applyPatch "$DOS_PATCHES/android_frameworks_base/272645.patch"; #ten-bt-sbc-hd-dualchannel: Add CHANNEL_MODE_DUAL_CHANNEL constant (ValdikSS) #applyPatch "$DOS_PATCHES/android_frameworks_base/272646-forwardport.patch"; #ten-bt-sbc-hd-dualchannel: Add Dual Channel into Bluetooth Audio Channel Mode developer options menu (ValdikSS) #applyPatch "$DOS_PATCHES/android_frameworks_base/272647.patch"; #ten-bt-sbc-hd-dualchannel: Allow SBC as HD audio codec in Bluetooth device configuration (ValdikSS) @@ -316,6 +329,7 @@ fi; if enterAndClear "packages/apps/Settings"; then git revert --no-edit 486980cfecce2ca64267f41462f9371486308e9d; #Don't hide OEM unlock +applyPatch "$DOS_PATCHES/android_packages_apps_Settings/368069-backport.patch"; #R_asb_2023-10 Restrict ApnEditor settings #applyPatch "$DOS_PATCHES/android_packages_apps_Settings/272651.patch"; #ten-bt-sbc-hd-dualchannel: Add Dual Channel into Bluetooth Audio Channel Mode developer options menu (ValdikSS) applyPatch "$DOS_PATCHES/android_packages_apps_Settings/0001-Captive_Portal_Toggle.patch"; #Add option to disable captive portal checks (MSe1969) #applyPatch "$DOS_PATCHES/android_packages_apps_Settings/0001-Captive_Portal_Toggle-gos.patch"; #Add option to disable captive portal checks (GrapheneOS) #FIXME: needs work @@ -369,6 +383,10 @@ fi; #cp $DOS_PATCHES_COMMON/android_packages_providers_TelephonyProvider/carrier_list.* assets/; #fi; +if enterAndClear "packages/services/Telecomm"; then +applyPatch "$DOS_PATCHES/android_packages_services_Telecomm/368072.patch"; #R_asb_2023-10 Fix vulnerability in CallRedirectionService. +fi; + if enterAndClear "prebuilts/abi-dumps/vndk"; then applyPatch "$DOS_PATCHES/android_prebuilts_abi-dumps_vndk/0001-protobuf-avi.patch"; #Work around ABI changes from compiler hardening (GrapheneOS) fi;