From ccb5764b726e1c41d9fafcae132322448b7a62d7 Mon Sep 17 00:00:00 2001 From: 5ec1cff <56485584+5ec1cff@users.noreply.github.com> Date: Wed, 21 Jun 2023 23:06:47 +0800 Subject: [PATCH] Receive the reply_ok to prevent from dmesg flooding (#35) --- build.gradle.kts | 1 + module/build.gradle.kts | 7 ++--- zygiskd/src/root_impl/kernelsu.rs | 45 ++++++++++++++++++++++++++----- 3 files changed, 44 insertions(+), 9 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index b9d4823..13f283f 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -33,6 +33,7 @@ val moduleId by extra("zygisksu") val moduleName by extra("Zygisk on KernelSU") val verName by extra("v4-0.7.1") val verCode by extra(gitCommitCount) +val commitHash by extra(gitCommitHash) val minKsuVersion by extra(10940) val minKsudVersion by extra(10942) val maxKsuVersion by extra(20000) diff --git a/module/build.gradle.kts b/module/build.gradle.kts index be720a7..39255fd 100644 --- a/module/build.gradle.kts +++ b/module/build.gradle.kts @@ -15,6 +15,7 @@ val minKsuVersion: Int by rootProject.extra val minKsudVersion: Int by rootProject.extra val maxKsuVersion: Int by rootProject.extra val minMagiskVersion: Int by rootProject.extra +val commitHash: String by rootProject.extra android.buildFeatures { androidResources = false @@ -27,7 +28,7 @@ androidComponents.onVariants { variant -> val buildTypeLowered = variant.buildType?.toLowerCase() val moduleDir = "$buildDir/outputs/module/$variantLowered" - val zipFileName = "$moduleName-$verName-$verCode-$buildTypeLowered.zip".replace(' ', '-') + val zipFileName = "$moduleName-$verName-$verCode-$commitHash-$buildTypeLowered.zip".replace(' ', '-') val prepareModuleFilesTask = task("prepareModuleFiles$variantCapped") { group = "module" @@ -46,8 +47,8 @@ androidComponents.onVariants { variant -> expand( "moduleId" to moduleId, "moduleName" to moduleName, - "versionName" to "$verName ($verCode-$variantLowered)", - "versionCode" to verCode, + "versionName" to "$verName ($verCode-$commitHash-$variantLowered)", + "versionCode" to verCode ) } from("$projectDir/src") { diff --git a/zygiskd/src/root_impl/kernelsu.rs b/zygiskd/src/root_impl/kernelsu.rs index d01cb81..29e5860 100644 --- a/zygiskd/src/root_impl/kernelsu.rs +++ b/zygiskd/src/root_impl/kernelsu.rs @@ -1,7 +1,8 @@ +use crate::constants::{MAX_KSU_VERSION, MIN_KSU_VERSION}; +use nix::libc; use nix::libc::prctl; -use crate::constants::{MIN_KSU_VERSION, MAX_KSU_VERSION}; -const KERNEL_SU_OPTION: i32 = 0xdeadbeefu32 as i32; +const KERNEL_SU_OPTION: u32 = 0xdeadbeefu32; const CMD_GET_VERSION: usize = 2; const CMD_UID_GRANTED_ROOT: usize = 12; @@ -15,23 +16,55 @@ pub enum Version { pub fn get_kernel_su() -> Option { let mut version = 0; - unsafe { prctl(KERNEL_SU_OPTION, CMD_GET_VERSION, &mut version as *mut i32, 0, 0) }; + unsafe { + prctl( + KERNEL_SU_OPTION as i32, + CMD_GET_VERSION, + &mut version as *mut i32, + 0, + 0, + ) + }; match version { 0 => None, MIN_KSU_VERSION..=MAX_KSU_VERSION => Some(Version::Supported), 1..=MIN_KSU_VERSION => Some(Version::TooOld), - _ => Some(Version::Abnormal) + _ => Some(Version::Abnormal), } } pub fn uid_granted_root(uid: i32) -> bool { + let mut result: u32 = 0; let mut granted = false; - unsafe { prctl(KERNEL_SU_OPTION, CMD_UID_GRANTED_ROOT, uid, &mut granted as *mut bool, 0) }; + unsafe { + prctl( + KERNEL_SU_OPTION as i32, + CMD_UID_GRANTED_ROOT, + uid, + &mut granted as *mut bool, + &mut result as *mut u32, + ) + }; + if result != KERNEL_SU_OPTION { + log::warn!("uid_granted_root failed"); + } granted } pub fn uid_should_umount(uid: i32) -> bool { + let mut result: u32 = 0; let mut umount = false; - unsafe { prctl(KERNEL_SU_OPTION, CMD_UID_SHOULD_UMOUNT, uid, &mut umount as *mut bool, 0) }; + unsafe { + prctl( + KERNEL_SU_OPTION as i32, + CMD_UID_SHOULD_UMOUNT, + uid, + &mut umount as *mut bool, + &mut result as *mut u32, + ) + }; + if result != KERNEL_SU_OPTION { + log::warn!("uid_granted_root failed"); + } umount }