From 0c247110a09344822483cff7e578138ba0075285 Mon Sep 17 00:00:00 2001 From: topjohnwu Date: Wed, 29 Aug 2018 13:31:26 -0400 Subject: [PATCH] Also get default flags in non-root environment --- .../components/MagiskInstallDialog.java | 8 +++--- .../com/topjohnwu/magisk/utils/RootUtils.java | 26 +++++++++---------- app/src/full/res/raw/nonroot_utils.sh | 13 ++++++++++ 3 files changed, 29 insertions(+), 18 deletions(-) create mode 100644 app/src/full/res/raw/nonroot_utils.sh diff --git a/app/src/full/java/com/topjohnwu/magisk/components/MagiskInstallDialog.java b/app/src/full/java/com/topjohnwu/magisk/components/MagiskInstallDialog.java index 52a3ca4f6..ebc675058 100644 --- a/app/src/full/java/com/topjohnwu/magisk/components/MagiskInstallDialog.java +++ b/app/src/full/java/com/topjohnwu/magisk/components/MagiskInstallDialog.java @@ -29,10 +29,10 @@ public class MagiskInstallDialog extends CustomAlertDialog { options.add(mm.getString(R.string.patch_boot_file)); if (Shell.rootAccess()) { options.add(mm.getString(R.string.direct_install)); - } - String s = ShellUtils.fastCmd("grep_prop ro.build.ab_update"); - if (!s.isEmpty() && Boolean.parseBoolean(s)) { - options.add(mm.getString(R.string.install_inactive_slot)); + String s = ShellUtils.fastCmd("grep_prop ro.build.ab_update"); + if (!s.isEmpty() && Boolean.parseBoolean(s)) { + options.add(mm.getString(R.string.install_inactive_slot)); + } } new InstallMethodDialog(activity, options).show(); }); diff --git a/app/src/full/java/com/topjohnwu/magisk/utils/RootUtils.java b/app/src/full/java/com/topjohnwu/magisk/utils/RootUtils.java index 48e214baa..1f2bab4fb 100644 --- a/app/src/full/java/com/topjohnwu/magisk/utils/RootUtils.java +++ b/app/src/full/java/com/topjohnwu/magisk/utils/RootUtils.java @@ -12,7 +12,6 @@ import com.topjohnwu.superuser.ShellUtils; import com.topjohnwu.superuser.io.SuFile; import java.io.File; -import java.io.IOException; import java.io.InputStream; public class RootUtils extends Shell.Initializer { @@ -27,17 +26,11 @@ public class RootUtils extends Shell.Initializer { @Override public boolean onInit(Context context, @NonNull Shell shell) { + Shell.Job job = shell.newJob(); if (shell.isRoot()) { - try (InputStream magiskUtils = context.getResources().openRawResource(R.raw.util_functions); - InputStream managerUtils = context.getResources().openRawResource(R.raw.utils) - ) { - shell.newJob() - .add(magiskUtils).add(managerUtils) - .add("mount_partitions", "get_flags", "run_migrations") - .exec(); - } catch (IOException e) { - return false; - } + InputStream magiskUtils = context.getResources().openRawResource(R.raw.util_functions); + InputStream managerUtils = context.getResources().openRawResource(R.raw.utils); + job.add(magiskUtils).add(managerUtils); Const.MAGISK_DISABLE_FILE = new SuFile("/cache/.disable_magisk"); SuFile file = new SuFile("/sbin/.core/img"); @@ -51,10 +44,15 @@ public class RootUtils extends Shell.Initializer { Const.MAGISK_HOST_FILE = new SuFile(Const.MAGISK_PATH + "/.core/hosts"); Data.loadMagiskInfo(); - - Data.keepVerity = Boolean.parseBoolean(ShellUtils.fastCmd("echo $KEEPVERITY")); - Data.keepEnc = Boolean.parseBoolean(ShellUtils.fastCmd("echo $KEEPFORCEENCRYPT")); + } else { + InputStream nonroot = context.getResources().openRawResource(R.raw.nonroot_utils); + job.add(nonroot); } + + job.add("mount_partitions", "get_flags", "run_migrations").exec(); + + Data.keepVerity = Boolean.parseBoolean(ShellUtils.fastCmd("echo $KEEPVERITY")); + Data.keepEnc = Boolean.parseBoolean(ShellUtils.fastCmd("echo $KEEPFORCEENCRYPT")); return true; } } diff --git a/app/src/full/res/raw/nonroot_utils.sh b/app/src/full/res/raw/nonroot_utils.sh new file mode 100644 index 000000000..c9c67f9a5 --- /dev/null +++ b/app/src/full/res/raw/nonroot_utils.sh @@ -0,0 +1,13 @@ +mount_partitions() { + [ "`getprop ro.build.ab_update`" = "true" ] && SLOT=`getprop ro.boot.slot_suffix` || SLOT= + [ "`getprop ro.build.system_root_image`" = "true" ] && SYSTEM_ROOT=true || SYSTEM_ROOT=false +} + +get_flags() { + $SYSTEM_ROOT && KEEPVERITY=true || KEEPVERITY=false + [ "`getprop ro.crypto.state`" = "encrypted" ] && KEEPFORCEENCRYPT=true || KEEPFORCEENCRYPT=false +} + +run_migrations() { + # NOP +}