Receive the reply_ok to prevent from dmesg flooding (#35)

This commit is contained in:
5ec1cff
2023-06-21 23:06:47 +08:00
committed by GitHub
parent e8958e94b6
commit ccb5764b72
3 changed files with 44 additions and 9 deletions

View File

@@ -33,6 +33,7 @@ val moduleId by extra("zygisksu")
val moduleName by extra("Zygisk on KernelSU") val moduleName by extra("Zygisk on KernelSU")
val verName by extra("v4-0.7.1") val verName by extra("v4-0.7.1")
val verCode by extra(gitCommitCount) val verCode by extra(gitCommitCount)
val commitHash by extra(gitCommitHash)
val minKsuVersion by extra(10940) val minKsuVersion by extra(10940)
val minKsudVersion by extra(10942) val minKsudVersion by extra(10942)
val maxKsuVersion by extra(20000) val maxKsuVersion by extra(20000)

View File

@@ -15,6 +15,7 @@ val minKsuVersion: Int by rootProject.extra
val minKsudVersion: Int by rootProject.extra val minKsudVersion: Int by rootProject.extra
val maxKsuVersion: Int by rootProject.extra val maxKsuVersion: Int by rootProject.extra
val minMagiskVersion: Int by rootProject.extra val minMagiskVersion: Int by rootProject.extra
val commitHash: String by rootProject.extra
android.buildFeatures { android.buildFeatures {
androidResources = false androidResources = false
@@ -27,7 +28,7 @@ androidComponents.onVariants { variant ->
val buildTypeLowered = variant.buildType?.toLowerCase() val buildTypeLowered = variant.buildType?.toLowerCase()
val moduleDir = "$buildDir/outputs/module/$variantLowered" 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<Sync>("prepareModuleFiles$variantCapped") { val prepareModuleFilesTask = task<Sync>("prepareModuleFiles$variantCapped") {
group = "module" group = "module"
@@ -46,8 +47,8 @@ androidComponents.onVariants { variant ->
expand( expand(
"moduleId" to moduleId, "moduleId" to moduleId,
"moduleName" to moduleName, "moduleName" to moduleName,
"versionName" to "$verName ($verCode-$variantLowered)", "versionName" to "$verName ($verCode-$commitHash-$variantLowered)",
"versionCode" to verCode, "versionCode" to verCode
) )
} }
from("$projectDir/src") { from("$projectDir/src") {

View File

@@ -1,7 +1,8 @@
use crate::constants::{MAX_KSU_VERSION, MIN_KSU_VERSION};
use nix::libc;
use nix::libc::prctl; 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_GET_VERSION: usize = 2;
const CMD_UID_GRANTED_ROOT: usize = 12; const CMD_UID_GRANTED_ROOT: usize = 12;
@@ -15,23 +16,55 @@ pub enum Version {
pub fn get_kernel_su() -> Option<Version> { pub fn get_kernel_su() -> Option<Version> {
let mut version = 0; 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 { match version {
0 => None, 0 => None,
MIN_KSU_VERSION..=MAX_KSU_VERSION => Some(Version::Supported), MIN_KSU_VERSION..=MAX_KSU_VERSION => Some(Version::Supported),
1..=MIN_KSU_VERSION => Some(Version::TooOld), 1..=MIN_KSU_VERSION => Some(Version::TooOld),
_ => Some(Version::Abnormal) _ => Some(Version::Abnormal),
} }
} }
pub fn uid_granted_root(uid: i32) -> bool { pub fn uid_granted_root(uid: i32) -> bool {
let mut result: u32 = 0;
let mut granted = false; 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 granted
} }
pub fn uid_should_umount(uid: i32) -> bool { pub fn uid_should_umount(uid: i32) -> bool {
let mut result: u32 = 0;
let mut umount = false; 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 umount
} }