From 8a03e46c7ed36d54b304986f8cf42d967d07238e Mon Sep 17 00:00:00 2001 From: Tad Date: Mon, 28 Mar 2022 15:11:22 -0400 Subject: [PATCH] Add the exec-spawning toggle from GrapheneOS Tested working on 18.1/klte TODO: backport to 16.0 Signed-off-by: Tad --- .../0009-exec_spawning_toggle.patch | 167 ++++++++++++++++++ .../0003-Exec_Based_Spawning.patch | 6 +- .../0018-Exec_Based_Spawning-1.patch | 8 +- .../0018-Exec_Based_Spawning-10.patch | 4 +- .../0018-Exec_Based_Spawning-11.patch | 4 +- .../0018-Exec_Based_Spawning-12.patch | 12 +- .../0018-Exec_Based_Spawning-2.patch | 4 +- .../0018-Exec_Based_Spawning-3.patch | 8 +- .../0018-Exec_Based_Spawning-4.patch | 8 +- .../0018-Exec_Based_Spawning-5.patch | 4 +- .../0018-Exec_Based_Spawning-6.patch | 4 +- .../0018-Exec_Based_Spawning-7.patch | 4 +- .../0018-Exec_Based_Spawning-8.patch | 4 +- .../0018-Exec_Based_Spawning-9.patch | 8 +- .../0003-Exec_Based_Spawning-1.patch | 6 +- .../0003-Exec_Based_Spawning-2.patch | 6 +- .../0009-Install_Restrictions.patch | 2 +- .../0010-exec_spawning_toggle.patch | 167 ++++++++++++++++++ Patches/Linux | 2 +- Scripts/LineageOS-16.0/Patch.sh | 1 + Scripts/LineageOS-17.1/Patch.sh | 2 + Scripts/LineageOS-18.1/Functions.sh | 2 +- Scripts/LineageOS-18.1/Patch.sh | 4 +- 23 files changed, 388 insertions(+), 49 deletions(-) create mode 100644 Patches/LineageOS-17.1/android_packages_apps_Settings/0009-exec_spawning_toggle.patch create mode 100644 Patches/LineageOS-18.1/android_packages_apps_Settings/0010-exec_spawning_toggle.patch 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 new file mode 100644 index 00000000..c36fb7e3 --- /dev/null +++ b/Patches/LineageOS-17.1/android_packages_apps_Settings/0009-exec_spawning_toggle.patch @@ -0,0 +1,167 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Daniel Micay +Date: Sat, 26 Mar 2022 20:35:37 -0400 +Subject: [PATCH] add exec spawning toggle + +--- + res/values/strings.xml | 2 + + res/xml/security_dashboard_settings.xml | 6 + + .../ExecSpawnPreferenceController.java | 106 ++++++++++++++++++ + .../settings/security/SecuritySettings.java | 1 + + 4 files changed, 115 insertions(+) + create mode 100644 src/com/android/settings/security/ExecSpawnPreferenceController.java + +diff --git a/res/values/strings.xml b/res/values/strings.xml +index fd3d1cde64..4b9b109d89 100644 +--- a/res/values/strings.xml ++++ b/res/values/strings.xml +@@ -11316,6 +11316,8 @@ + + Overrides the force-dark feature to be always-on + ++ Enable secure app spawning ++ Launch apps in a more secure way than Android which takes slightly longer and increases memory usage by app processes. + Enable native code debugging + 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 +--- a/res/xml/security_dashboard_settings.xml ++++ b/res/xml/security_dashboard_settings.xml +@@ -64,6 +64,12 @@ + android:entries="@array/auto_reboot_entries" + android:entryValues="@array/auto_reboot_values" /> + ++ ++ + Date: Thu, 17 Sep 2020 10:53:00 -0400 Subject: [PATCH] disable enforce RRO for mainline devices @@ -12,10 +12,10 @@ exec-based spawning in GrapheneOS. 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/product/mainline_system.mk b/target/product/mainline_system.mk -index 1f22163c32..db2af7d1d2 100644 +index e9f9dde138..1199b78598 100644 --- a/target/product/mainline_system.mk +++ b/target/product/mainline_system.mk -@@ -115,7 +115,7 @@ PRODUCT_COPY_FILES += \ +@@ -118,7 +118,7 @@ PRODUCT_COPY_FILES += \ # Enable dynamic partition size PRODUCT_USE_DYNAMIC_PARTITION_SIZE := true diff --git a/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-1.patch b/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-1.patch index 9b45df15..cc599255 100644 --- a/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-1.patch +++ b/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-1.patch @@ -1,4 +1,4 @@ -From 14c3c1d4cd2df5dde69274e76a91b42fa383e577 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Daniel Micay Date: Sat, 14 Mar 2015 18:10:20 -0400 Subject: [PATCH] add exec-based spawning support @@ -135,7 +135,7 @@ diff --git a/core/java/com/android/internal/os/WrapperInit.java b/core/java/com/ index 790d7f7ab694..4f7fd039ccd7 100644 --- a/core/java/com/android/internal/os/WrapperInit.java +++ b/core/java/com/android/internal/os/WrapperInit.java -@@ -185,7 +185,7 @@ private static Runnable wrapperInit(int targetSdkVersion, String[] argv) { +@@ -185,7 +185,7 @@ public class WrapperInit { * This is acceptable here as failure will leave the wrapped app with strictly less * capabilities, which may make it crash, but not exceed its allowances. */ @@ -148,7 +148,7 @@ diff --git a/core/java/com/android/internal/os/ZygoteConnection.java b/core/java index e6a3029c5b2b..a702e84813fa 100644 --- a/core/java/com/android/internal/os/ZygoteConnection.java +++ b/core/java/com/android/internal/os/ZygoteConnection.java -@@ -29,6 +29,7 @@ +@@ -29,6 +29,7 @@ import android.net.Credentials; import android.net.LocalSocket; import android.os.Parcel; import android.os.Process; @@ -156,7 +156,7 @@ index e6a3029c5b2b..a702e84813fa 100644 import android.os.Trace; import android.system.ErrnoException; import android.system.Os; -@@ -501,6 +502,13 @@ private Runnable handleChildProc(ZygoteArguments parsedArgs, +@@ -501,6 +502,13 @@ class ZygoteConnection { throw new IllegalStateException("WrapperInit.execApplication unexpectedly returned"); } else { if (!isZygote) { diff --git a/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-10.patch b/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-10.patch index 8653c0e8..62e2dc20 100644 --- a/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-10.patch +++ b/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-10.patch @@ -1,4 +1,4 @@ -From d414dcaa351e7a890d31c1da949421fb435ff168 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Daniel Micay Date: Wed, 11 Sep 2019 06:57:24 -0400 Subject: [PATCH] disable preloading classloaders for exec spawning @@ -11,7 +11,7 @@ diff --git a/core/java/com/android/internal/os/ZygoteInit.java b/core/java/com/a index ad3b95ec67fc..0877a1668930 100644 --- a/core/java/com/android/internal/os/ZygoteInit.java +++ b/core/java/com/android/internal/os/ZygoteInit.java -@@ -135,9 +135,11 @@ static void preload(TimingsTraceLog bootTimingsTraceLog, boolean fullPreload) { +@@ -135,9 +135,11 @@ public class ZygoteInit { preloadClasses(); bootTimingsTraceLog.traceEnd(); // PreloadClasses } diff --git a/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-11.patch b/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-11.patch index edf2de7e..be49a429 100644 --- a/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-11.patch +++ b/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-11.patch @@ -1,4 +1,4 @@ -From b4cd877e3a0c2384b8939d5d1e2b6b734bbd13b2 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Daniel Micay Date: Wed, 11 Sep 2019 06:58:51 -0400 Subject: [PATCH] disable preloading HALs for exec spawning @@ -11,7 +11,7 @@ diff --git a/core/java/com/android/internal/os/ZygoteInit.java b/core/java/com/a index 0877a1668930..d19868ebd9ca 100644 --- a/core/java/com/android/internal/os/ZygoteInit.java +++ b/core/java/com/android/internal/os/ZygoteInit.java -@@ -145,9 +145,11 @@ static void preload(TimingsTraceLog bootTimingsTraceLog, boolean fullPreload) { +@@ -145,9 +145,11 @@ public class ZygoteInit { preloadResources(); bootTimingsTraceLog.traceEnd(); // PreloadResources } diff --git a/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-12.patch b/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-12.patch index 882f7b64..1427edbe 100644 --- a/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-12.patch +++ b/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-12.patch @@ -1,4 +1,4 @@ -From 98634286bbdffe967a9a03442e5aa324ec26986a Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: anupritaisno1 Date: Fri, 30 Oct 2020 22:26:09 +0000 Subject: [PATCH] pass through runtime flags for exec spawning and implement @@ -16,7 +16,7 @@ diff --git a/core/java/com/android/internal/os/ExecInit.java b/core/java/com/and index 830e5b562a91..749c67abf389 100644 --- a/core/java/com/android/internal/os/ExecInit.java +++ b/core/java/com/android/internal/os/ExecInit.java -@@ -31,15 +31,20 @@ public static void main(String[] args) { +@@ -31,15 +31,20 @@ public class ExecInit { // Parse our mandatory argument. int targetSdkVersion = Integer.parseInt(args[0], 10); @@ -39,7 +39,7 @@ index 830e5b562a91..749c67abf389 100644 r.run(); } -@@ -52,9 +57,9 @@ public static void main(String[] args) { +@@ -52,9 +57,9 @@ public class ExecInit { * @param args Arguments for {@link RuntimeInit#main}. */ public static void execApplication(String niceName, int targetSdkVersion, @@ -51,7 +51,7 @@ index 830e5b562a91..749c67abf389 100644 String[] argv = new String[baseArgs + args.length]; if (VMRuntime.is64BitInstructionSet(instructionSet)) { argv[0] = "/system/bin/app_process64"; -@@ -68,6 +73,7 @@ public static void execApplication(String niceName, int targetSdkVersion, +@@ -68,6 +73,7 @@ public class ExecInit { } argv[3 + niceArgs] = "com.android.internal.os.ExecInit"; argv[4 + niceArgs] = Integer.toString(targetSdkVersion); @@ -63,7 +63,7 @@ diff --git a/core/java/com/android/internal/os/Zygote.java b/core/java/com/andro index a7d9827855a2..aa874ad98a78 100644 --- a/core/java/com/android/internal/os/Zygote.java +++ b/core/java/com/android/internal/os/Zygote.java -@@ -1097,4 +1097,13 @@ static void appendQuotedShellArgs(StringBuilder command, String[] args) { +@@ -1097,4 +1097,13 @@ public final class Zygote { * fully-feature Memory Tagging, rather than the static Tagged Pointers. */ public static native boolean nativeSupportsTaggedPointers(); @@ -81,7 +81,7 @@ diff --git a/core/java/com/android/internal/os/ZygoteConnection.java b/core/java index 9b4664178530..4ae69677f1dd 100644 --- a/core/java/com/android/internal/os/ZygoteConnection.java +++ b/core/java/com/android/internal/os/ZygoteConnection.java -@@ -505,7 +505,7 @@ private Runnable handleChildProc(ZygoteArguments parsedArgs, +@@ -505,7 +505,7 @@ class ZygoteConnection { if (SystemProperties.getBoolean("sys.spawn.exec", true) && (parsedArgs.mRuntimeFlags & ApplicationInfo.FLAG_DEBUGGABLE) == 0) { ExecInit.execApplication(parsedArgs.mNiceName, parsedArgs.mTargetSdkVersion, diff --git a/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-2.patch b/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-2.patch index 3b496ca6..d8c0038d 100644 --- a/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-2.patch +++ b/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-2.patch @@ -1,4 +1,4 @@ -From ac1943345ec96411ecbac3ce9b15cb371cc03551 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Daniel Micay Date: Tue, 21 May 2019 23:54:20 -0400 Subject: [PATCH] disable exec spawning when using debugging options @@ -13,7 +13,7 @@ diff --git a/core/java/com/android/internal/os/ZygoteConnection.java b/core/java index a702e84813fa..9b4664178530 100644 --- a/core/java/com/android/internal/os/ZygoteConnection.java +++ b/core/java/com/android/internal/os/ZygoteConnection.java -@@ -502,7 +502,8 @@ private Runnable handleChildProc(ZygoteArguments parsedArgs, +@@ -502,7 +502,8 @@ class ZygoteConnection { throw new IllegalStateException("WrapperInit.execApplication unexpectedly returned"); } else { if (!isZygote) { diff --git a/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-3.patch b/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-3.patch index 165eeaf5..b6587698 100644 --- a/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-3.patch +++ b/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-3.patch @@ -1,4 +1,4 @@ -From 1abb8050413dae6ac6c1a082a38fb555c88534b9 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Daniel Micay Date: Tue, 14 May 2019 14:24:21 -0400 Subject: [PATCH] add parameter for avoiding full preload with exec @@ -12,7 +12,7 @@ diff --git a/core/java/com/android/internal/os/ExecInit.java b/core/java/com/and index 2adcab7fdbe6..830e5b562a91 100644 --- a/core/java/com/android/internal/os/ExecInit.java +++ b/core/java/com/android/internal/os/ExecInit.java -@@ -33,7 +33,7 @@ public static void main(String[] args) { +@@ -33,7 +33,7 @@ public class ExecInit { // Mimic system Zygote preloading. ZygoteInit.preload(new TimingsTraceLog("ExecInitTiming", @@ -25,7 +25,7 @@ diff --git a/core/java/com/android/internal/os/ZygoteInit.java b/core/java/com/a index 2e32730a6ecb..b9460f56d003 100644 --- a/core/java/com/android/internal/os/ZygoteInit.java +++ b/core/java/com/android/internal/os/ZygoteInit.java -@@ -125,7 +125,7 @@ +@@ -125,7 +125,7 @@ public class ZygoteInit { private static boolean sPreloadComplete; @@ -34,7 +34,7 @@ index 2e32730a6ecb..b9460f56d003 100644 Log.d(TAG, "begin preload"); bootTimingsTraceLog.traceBegin("BeginPreload"); beginPreload(); -@@ -157,6 +157,10 @@ static void preload(TimingsTraceLog bootTimingsTraceLog) { +@@ -157,6 +157,10 @@ public class ZygoteInit { sPreloadComplete = true; } diff --git a/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-4.patch b/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-4.patch index 70d7dec2..af4bb4bd 100644 --- a/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-4.patch +++ b/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-4.patch @@ -1,4 +1,4 @@ -From 2e07ab8c242551e6847bffef84546ed5eaf345cf Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Daniel Micay Date: Wed, 11 Sep 2019 06:43:55 -0400 Subject: [PATCH] pass through fullPreload to libcore @@ -11,7 +11,7 @@ diff --git a/core/java/com/android/internal/os/ZygoteInit.java b/core/java/com/a index b9460f56d003..467183355515 100644 --- a/core/java/com/android/internal/os/ZygoteInit.java +++ b/core/java/com/android/internal/os/ZygoteInit.java -@@ -128,7 +128,7 @@ +@@ -128,7 +128,7 @@ public class ZygoteInit { static void preload(TimingsTraceLog bootTimingsTraceLog, boolean fullPreload) { Log.d(TAG, "begin preload"); bootTimingsTraceLog.traceBegin("BeginPreload"); @@ -20,7 +20,7 @@ index b9460f56d003..467183355515 100644 bootTimingsTraceLog.traceEnd(); // BeginPreload bootTimingsTraceLog.traceBegin("PreloadClasses"); preloadClasses(); -@@ -150,7 +150,7 @@ static void preload(TimingsTraceLog bootTimingsTraceLog, boolean fullPreload) { +@@ -150,7 +150,7 @@ public class ZygoteInit { // Ask the WebViewFactory to do any initialization that must run in the zygote process, // for memory sharing purposes. WebViewFactory.prepareWebViewInZygote(); @@ -29,7 +29,7 @@ index b9460f56d003..467183355515 100644 warmUpJcaProviders(); Log.d(TAG, "end preload"); -@@ -168,14 +168,14 @@ public static void lazyPreload() { +@@ -168,14 +168,14 @@ public class ZygoteInit { preload(new TimingsTraceLog("ZygoteInitTiming_lazy", Trace.TRACE_TAG_DALVIK)); } diff --git a/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-5.patch b/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-5.patch index 7fa3515e..955c5269 100644 --- a/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-5.patch +++ b/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-5.patch @@ -1,4 +1,4 @@ -From 0044836677b9be153e04a91dddddcb74d9585643 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Daniel Micay Date: Tue, 14 May 2019 14:28:27 -0400 Subject: [PATCH] disable OpenGL preloading for exec spawning @@ -11,7 +11,7 @@ diff --git a/core/java/com/android/internal/os/ZygoteInit.java b/core/java/com/a index 467183355515..e93e70443ee6 100644 --- a/core/java/com/android/internal/os/ZygoteInit.java +++ b/core/java/com/android/internal/os/ZygoteInit.java -@@ -142,9 +142,11 @@ static void preload(TimingsTraceLog bootTimingsTraceLog, boolean fullPreload) { +@@ -142,9 +142,11 @@ public class ZygoteInit { Trace.traceBegin(Trace.TRACE_TAG_DALVIK, "PreloadAppProcessHALs"); nativePreloadAppProcessHALs(); Trace.traceEnd(Trace.TRACE_TAG_DALVIK); diff --git a/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-6.patch b/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-6.patch index bf0a333a..7801968d 100644 --- a/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-6.patch +++ b/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-6.patch @@ -1,4 +1,4 @@ -From c561811fad950dce791ef9941753ef95076da4c0 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Daniel Micay Date: Tue, 14 May 2019 14:28:52 -0400 Subject: [PATCH] disable resource preloading for exec spawning @@ -11,7 +11,7 @@ diff --git a/core/java/com/android/internal/os/ZygoteInit.java b/core/java/com/a index e93e70443ee6..2d1f301668a4 100644 --- a/core/java/com/android/internal/os/ZygoteInit.java +++ b/core/java/com/android/internal/os/ZygoteInit.java -@@ -136,9 +136,11 @@ static void preload(TimingsTraceLog bootTimingsTraceLog, boolean fullPreload) { +@@ -136,9 +136,11 @@ public class ZygoteInit { bootTimingsTraceLog.traceBegin("CacheNonBootClasspathClassLoaders"); cacheNonBootClasspathClassLoaders(); bootTimingsTraceLog.traceEnd(); // CacheNonBootClasspathClassLoaders diff --git a/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-7.patch b/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-7.patch index dc9d865d..50fb0e0c 100644 --- a/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-7.patch +++ b/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-7.patch @@ -1,4 +1,4 @@ -From 7a848373efa0bd5b948af7ade19927a8706f9ea2 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Daniel Micay Date: Tue, 14 May 2019 14:30:59 -0400 Subject: [PATCH] disable class preloading for exec spawning @@ -11,7 +11,7 @@ diff --git a/core/java/com/android/internal/os/ZygoteInit.java b/core/java/com/a index 2d1f301668a4..b7246d0ac5ce 100644 --- a/core/java/com/android/internal/os/ZygoteInit.java +++ b/core/java/com/android/internal/os/ZygoteInit.java -@@ -130,9 +130,11 @@ static void preload(TimingsTraceLog bootTimingsTraceLog, boolean fullPreload) { +@@ -130,9 +130,11 @@ public class ZygoteInit { bootTimingsTraceLog.traceBegin("BeginPreload"); beginPreload(fullPreload); bootTimingsTraceLog.traceEnd(); // BeginPreload diff --git a/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-8.patch b/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-8.patch index 0a5b57a7..86b0054f 100644 --- a/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-8.patch +++ b/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-8.patch @@ -1,4 +1,4 @@ -From 89646bdeb19463424158544c6942224320e9e180 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Daniel Micay Date: Tue, 14 May 2019 14:31:29 -0400 Subject: [PATCH] disable WebView reservation for exec spawning @@ -11,7 +11,7 @@ diff --git a/core/java/com/android/internal/os/ZygoteInit.java b/core/java/com/a index b7246d0ac5ce..04a323254c72 100644 --- a/core/java/com/android/internal/os/ZygoteInit.java +++ b/core/java/com/android/internal/os/ZygoteInit.java -@@ -153,9 +153,11 @@ static void preload(TimingsTraceLog bootTimingsTraceLog, boolean fullPreload) { +@@ -153,9 +153,11 @@ public class ZygoteInit { } preloadSharedLibraries(); preloadTextResources(); diff --git a/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-9.patch b/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-9.patch index ee239723..f22946d9 100644 --- a/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-9.patch +++ b/Patches/LineageOS-18.1/android_frameworks_base/0018-Exec_Based_Spawning-9.patch @@ -1,4 +1,4 @@ -From 2a70bbac4a8342175971498084494845b4f24546 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Daniel Micay Date: Tue, 14 May 2019 14:34:32 -0400 Subject: [PATCH] disable JCA provider warm up for exec spawning @@ -11,7 +11,7 @@ diff --git a/core/java/com/android/internal/os/ZygoteInit.java b/core/java/com/a index 04a323254c72..ad3b95ec67fc 100644 --- a/core/java/com/android/internal/os/ZygoteInit.java +++ b/core/java/com/android/internal/os/ZygoteInit.java -@@ -159,7 +159,7 @@ static void preload(TimingsTraceLog bootTimingsTraceLog, boolean fullPreload) { +@@ -159,7 +159,7 @@ public class ZygoteInit { WebViewFactory.prepareWebViewInZygote(); } endPreload(fullPreload); @@ -20,7 +20,7 @@ index 04a323254c72..ad3b95ec67fc 100644 Log.d(TAG, "end preload"); sPreloadComplete = true; -@@ -229,7 +229,7 @@ private static void preloadTextResources() { +@@ -229,7 +229,7 @@ public class ZygoteInit { * By doing it here we avoid that each app does it when requesting a service from the provider * for the first time. */ @@ -29,7 +29,7 @@ index 04a323254c72..ad3b95ec67fc 100644 long startTime = SystemClock.uptimeMillis(); Trace.traceBegin( Trace.TRACE_TAG_DALVIK, "Starting installation of AndroidKeyStoreProvider"); -@@ -241,15 +241,17 @@ private static void warmUpJcaProviders() { +@@ -241,15 +241,17 @@ public class ZygoteInit { + (SystemClock.uptimeMillis() - startTime) + "ms."); Trace.traceEnd(Trace.TRACE_TAG_DALVIK); diff --git a/Patches/LineageOS-18.1/android_libcore/0003-Exec_Based_Spawning-1.patch b/Patches/LineageOS-18.1/android_libcore/0003-Exec_Based_Spawning-1.patch index 7e821d02..929ef165 100644 --- a/Patches/LineageOS-18.1/android_libcore/0003-Exec_Based_Spawning-1.patch +++ b/Patches/LineageOS-18.1/android_libcore/0003-Exec_Based_Spawning-1.patch @@ -1,4 +1,4 @@ -From 4c2635390c10512b0c79ee1f3658a25d6b671ca0 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Daniel Micay Date: Wed, 11 Sep 2019 06:46:38 -0400 Subject: [PATCH] add parameter for avoiding full preload with exec @@ -12,7 +12,7 @@ diff --git a/dalvik/src/main/java/dalvik/system/ZygoteHooks.java b/dalvik/src/ma index 7e8fe3651e..de5a056143 100644 --- a/dalvik/src/main/java/dalvik/system/ZygoteHooks.java +++ b/dalvik/src/main/java/dalvik/system/ZygoteHooks.java -@@ -48,7 +48,7 @@ private ZygoteHooks() { +@@ -48,7 +48,7 @@ public final class ZygoteHooks { * Called when the zygote begins preloading classes and data. */ @libcore.api.CorePlatformApi @@ -21,7 +21,7 @@ index 7e8fe3651e..de5a056143 100644 // Pin ICU data in memory from this point that would normally be held by soft references. // Without this, any references created immediately below or during class preloading // would be collected when the Zygote GC runs in gcAndFinalize(). -@@ -71,7 +71,7 @@ public static void onBeginPreload() { +@@ -71,7 +71,7 @@ public final class ZygoteHooks { * Called when the zygote has completed preloading classes and data. */ @libcore.api.CorePlatformApi diff --git a/Patches/LineageOS-18.1/android_libcore/0003-Exec_Based_Spawning-2.patch b/Patches/LineageOS-18.1/android_libcore/0003-Exec_Based_Spawning-2.patch index 9e170aa4..b7f2b682 100644 --- a/Patches/LineageOS-18.1/android_libcore/0003-Exec_Based_Spawning-2.patch +++ b/Patches/LineageOS-18.1/android_libcore/0003-Exec_Based_Spawning-2.patch @@ -1,4 +1,4 @@ -From add34a4bc6aa69f21f012d62215b5af500bea551 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Daniel Micay Date: Wed, 11 Sep 2019 06:47:11 -0400 Subject: [PATCH] disable ICU cache pinning for exec spawning @@ -11,7 +11,7 @@ diff --git a/dalvik/src/main/java/dalvik/system/ZygoteHooks.java b/dalvik/src/ma index de5a056143..e77cec2517 100644 --- a/dalvik/src/main/java/dalvik/system/ZygoteHooks.java +++ b/dalvik/src/main/java/dalvik/system/ZygoteHooks.java -@@ -49,15 +49,17 @@ private ZygoteHooks() { +@@ -49,15 +49,17 @@ public final class ZygoteHooks { */ @libcore.api.CorePlatformApi public static void onBeginPreload(boolean fullPreload) { @@ -38,7 +38,7 @@ index de5a056143..e77cec2517 100644 } // Framework's LocalLog is used during app start-up. It indirectly uses the current ICU time -@@ -72,8 +74,10 @@ public static void onBeginPreload(boolean fullPreload) { +@@ -72,8 +74,10 @@ public final class ZygoteHooks { */ @libcore.api.CorePlatformApi public static void onEndPreload(boolean fullPreload) { diff --git a/Patches/LineageOS-18.1/android_packages_apps_Settings/0009-Install_Restrictions.patch b/Patches/LineageOS-18.1/android_packages_apps_Settings/0009-Install_Restrictions.patch index e3915b20..98833212 100644 --- a/Patches/LineageOS-18.1/android_packages_apps_Settings/0009-Install_Restrictions.patch +++ b/Patches/LineageOS-18.1/android_packages_apps_Settings/0009-Install_Restrictions.patch @@ -10,7 +10,7 @@ Subject: [PATCH] UserManager app installation restrictions 3 files changed, 44 insertions(+), 5 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml -index 87ef39ed10..66b27f3263 100644 +index b33a94d4a6..1cd05427d1 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -7088,6 +7088,8 @@ diff --git a/Patches/LineageOS-18.1/android_packages_apps_Settings/0010-exec_spawning_toggle.patch b/Patches/LineageOS-18.1/android_packages_apps_Settings/0010-exec_spawning_toggle.patch new file mode 100644 index 00000000..920c3788 --- /dev/null +++ b/Patches/LineageOS-18.1/android_packages_apps_Settings/0010-exec_spawning_toggle.patch @@ -0,0 +1,167 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Daniel Micay +Date: Sat, 26 Mar 2022 20:35:37 -0400 +Subject: [PATCH] add exec spawning toggle + +--- + res/values/strings.xml | 2 + + res/xml/security_dashboard_settings.xml | 6 + + .../ExecSpawnPreferenceController.java | 106 ++++++++++++++++++ + .../settings/security/SecuritySettings.java | 1 + + 4 files changed, 115 insertions(+) + create mode 100644 src/com/android/settings/security/ExecSpawnPreferenceController.java + +diff --git a/res/values/strings.xml b/res/values/strings.xml +index 87ef39ed10..b33a94d4a6 100644 +--- a/res/values/strings.xml ++++ b/res/values/strings.xml +@@ -11957,6 +11957,8 @@ + + Overrides the force-dark feature to be always-on + ++ Enable secure app spawning ++ Launch apps in a more secure way than Android which takes slightly longer and increases memory usage by app processes. + Enable native code debugging + 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 06b3511ceb..75cc0b261d 100644 +--- a/res/xml/security_dashboard_settings.xml ++++ b/res/xml/security_dashboard_settings.xml +@@ -64,6 +64,12 @@ + android:entries="@array/auto_reboot_entries" + android:entryValues="@array/auto_reboot_values" /> + ++ ++ +