From 915749e59ba2fbff583878b5fc7ca01a8874d284 Mon Sep 17 00:00:00 2001 From: Nullptr Date: Fri, 24 Feb 2023 08:57:51 +0800 Subject: [PATCH] Never allow multiple root implementation --- module/src/customize.sh | 6 ++++++ module/src/post-fs-data.sh | 2 +- module/src/service.sh | 2 +- zygiskd/src/root_impl/magisk.rs | 4 ++-- zygiskd/src/root_impl/mod.rs | 3 +++ 5 files changed, 13 insertions(+), 4 deletions(-) diff --git a/module/src/customize.sh b/module/src/customize.sh index aa0f73d..51a0dfd 100644 --- a/module/src/customize.sh +++ b/module/src/customize.sh @@ -28,6 +28,12 @@ if [ "$BOOTMODE" ] && [ "$KSU" ]; then ui_print "! Please update KernelSU Manager to latest version" abort "*********************************************************" fi + if [ "$(which magisk)" ]; then + ui_print "*********************************************************" + ui_print "! Multiple root implementation is NOT supported!" + ui_print "! Please uninstall Magisk before installing Zygisksu" + abort "*********************************************************" + fi elif [ "$BOOTMODE" ] && [ "$MAGISK_VER_CODE" ]; then ui_print "- Installing from Magisk app" if [ "$MAGISK_VER_CODE" -lt "$MIN_MAGISK_VERSION" ]; then diff --git a/module/src/post-fs-data.sh b/module/src/post-fs-data.sh index f19ef2d..855b70e 100644 --- a/module/src/post-fs-data.sh +++ b/module/src/post-fs-data.sh @@ -8,7 +8,7 @@ fi cd "$MODDIR" export NATIVE_BRIDGE=$(getprop ro.dalvik.vm.native.bridge) -if [ $(which magisk) ] && [ ".." -ef "/data/adb/modules" ]; then +if [ "$(which magisk)" ] && [ ".." -ef "/data/adb/modules" ]; then for file in ../*; do if [ -d "$file" ] && [ -d "$file/zygisk" ] && ! [ -f "$file/disable" ]; then if [ -f "$file/post-fs-data.sh" ]; then diff --git a/module/src/service.sh b/module/src/service.sh index 2819816..3d0dc50 100644 --- a/module/src/service.sh +++ b/module/src/service.sh @@ -7,7 +7,7 @@ fi cd "$MODDIR" -if [ $(which magisk) ] && [ ".." -ef "/data/adb/modules" ]; then +if [ "$(which magisk)" ] && [ ".." -ef "/data/adb/modules" ]; then for file in ../*; do if [ -d "$file" ] && [ -d "$file/zygisk" ] && ! [ -f "$file/disable" ]; then if [ -f "$file/service.sh" ]; then diff --git a/zygiskd/src/root_impl/magisk.rs b/zygiskd/src/root_impl/magisk.rs index 3dac272..11641ee 100644 --- a/zygiskd/src/root_impl/magisk.rs +++ b/zygiskd/src/root_impl/magisk.rs @@ -4,12 +4,12 @@ use crate::constants::MIN_MAGISK_VERSION; pub fn is_magisk() -> Result { let version: Option = Command::new("magisk") - .arg("--version") + .arg("-V") .stdout(Stdio::piped()) .spawn().ok() .and_then(|child| child.wait_with_output().ok()) .and_then(|output| String::from_utf8(output.stdout).ok()) - .and_then(|output| output.parse().ok()); + .and_then(|output| output.trim().parse().ok()); if let Some(version) = version { if version < MIN_MAGISK_VERSION { bail!("Magisk version too old: {}", version); diff --git a/zygiskd/src/root_impl/mod.rs b/zygiskd/src/root_impl/mod.rs index 67137cb..688654b 100644 --- a/zygiskd/src/root_impl/mod.rs +++ b/zygiskd/src/root_impl/mod.rs @@ -13,6 +13,9 @@ static ROOT_IMPL: OnceCell = OnceCell::new(); pub fn setup() -> Result<()> { if kernelsu::is_kernel_su()? { + if let Ok(true) = magisk::is_magisk() { + bail!("Multiple root implementation"); + } let _ = ROOT_IMPL.set(RootImpl::KernelSU); } else if magisk::is_magisk()? { let _ = ROOT_IMPL.set(RootImpl::Magisk);