diff --git a/userspace/ksud/Cargo.lock b/userspace/ksud/Cargo.lock index f864e0b7..f5eb1942 100644 --- a/userspace/ksud/Cargo.lock +++ b/userspace/ksud/Cargo.lock @@ -29,7 +29,7 @@ version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "once_cell", "version_check", "zerocopy", @@ -61,9 +61,9 @@ checksum = "84521a3cf562bc62942e294181d9eef17eb38ceb8c68677bc49f144e4c3d4f8d" [[package]] name = "android_logger" -version = "0.14.1" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05b07e8e73d720a1f2e4b6014766e6039fd2e96a4fa44e2a78d0e1fa2ff49826" +checksum = "f6f39be698127218cca460cb624878c9aa4e2b47dba3b277963d2bf00bad263b" dependencies = [ "android_log-sys", "env_filter", @@ -168,7 +168,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" dependencies = [ "addr2line", - "cfg-if", + "cfg-if 1.0.0", "libc", "miniz_oxide", "object", @@ -184,9 +184,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" +checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" [[package]] name = "block-buffer" @@ -224,6 +224,12 @@ dependencies = [ "shlex", ] +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + [[package]] name = "cfg-if" version = "1.0.0" @@ -246,9 +252,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.37" +version = "4.5.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eccb054f56cbd38340b380d4a8e69ef1f02f1af43db2f0cc817a4774d80ae071" +checksum = "ed93b9805f8ba930df42c2590f05453d5ec36cbb85d018868a5b24d31f6ac000" dependencies = [ "clap_builder", "clap_derive", @@ -256,9 +262,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.37" +version = "4.5.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efd9466fac8543255d3b1fcad4762c5e116ffe808c8a3043d4263cd4fd4862a2" +checksum = "379026ff283facf611b0ea629334361c4211d1b12ee01024eec1591133b04120" dependencies = [ "anstream", "anstyle", @@ -355,7 +361,7 @@ version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", ] [[package]] @@ -489,7 +495,7 @@ version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", ] [[package]] @@ -536,9 +542,9 @@ dependencies = [ [[package]] name = "errno" -version = "0.3.11" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "976dd42dc7e85965fe702eb8164f21f450704bdde31faefd6471dba214cb594e" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" dependencies = [ "libc", "windows-sys 0.59.0", @@ -578,9 +584,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ced92e76e966ca2fd84c8f7aa01a4aea65b0eb6648d72f7c8f3e2764a67fece" dependencies = [ "crc32fast", + "libz-rs-sys", "miniz_oxide", ] +[[package]] +name = "fs4" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8640e34b88f7652208ce9e88b1a37a2ae95227d84abec377ccd3c5cfeb141ed4" +dependencies = [ + "rustix 1.0.7", + "windows-sys 0.59.0", +] + [[package]] name = "generic-array" version = "0.14.7" @@ -606,7 +623,7 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "libc", "r-efi", "wasi", @@ -630,9 +647,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.3" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" [[package]] name = "heck" @@ -646,6 +663,19 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +[[package]] +name = "hole-punch" +version = "0.0.4-alpha.0" +source = "git+https://github.com/tiann/hole-punch#11ab7a61bfb98682b72fd7f58a47d8e5d997328e" +dependencies = [ + "cfg-if 0.1.10", + "errno 0.2.8", + "libc", + "memmap", + "thiserror", + "winapi", +] + [[package]] name = "humansize" version = "2.1.3" @@ -709,7 +739,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" dependencies = [ "equivalent", - "hashbrown 0.15.3", + "hashbrown 0.15.2", ] [[package]] @@ -777,13 +807,16 @@ dependencies = [ "encoding_rs", "env_logger", "extattr", + "fs4", "getopts", + "hole-punch", "humansize", "is_executable", "java-properties", "jwalk", "libc", "log", + "loopdev", "nom", "procfs", "regex-lite", @@ -840,6 +873,15 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" +[[package]] +name = "libz-rs-sys" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "172a788537a2221661b480fee8dc5f96c580eb34fa88764d3205dc356c7e4221" +dependencies = [ + "zlib-rs", +] + [[package]] name = "linux-raw-sys" version = "0.4.15" @@ -858,6 +900,15 @@ version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +[[package]] +name = "loopdev" +version = "0.5.0" +source = "git+https://github.com/Kernel-SU/loopdev#7a921f8d966477a645b1188732fac486c71a68ef" +dependencies = [ + "errno 0.2.8", + "libc", +] + [[package]] name = "lzma-rs" version = "0.3.0" @@ -885,6 +936,16 @@ version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +[[package]] +name = "memmap" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6585fd95e7bb50d6cc31e20d4cf9afb4e2ba16c5846fc76793f11218da9c475b" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "miniz_oxide" version = "0.8.8" @@ -966,7 +1027,7 @@ version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cc5b72d8145275d844d4b5f6d4e1eef00c8cd889edb6035c21675d1bb1f45c9f" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.8.0", "chrono", "flate2", "hex", @@ -980,7 +1041,7 @@ version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "239df02d8349b06fc07398a3a1697b06418223b1c7725085e801e7c0fc6a12ec" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.8.0", "chrono", "hex", ] @@ -1034,9 +1095,9 @@ checksum = "3582f63211428f83597b51b2ddb88e2a91a9d52d12831f9d08f5e624e8977422" [[package]] name = "rust-embed" -version = "8.7.1" +version = "8.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60e425e204264b144d4c929d126d0de524b40a961686414bab5040f7465c71be" +checksum = "025908b8682a26ba8d12f6f2d66b987584a4a87bc024abc5bbc12553a8cd178a" dependencies = [ "include-flate", "rust-embed-impl", @@ -1046,9 +1107,9 @@ dependencies = [ [[package]] name = "rust-embed-impl" -version = "8.7.0" +version = "8.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bf418c9a2e3f6663ca38b8a7134cc2c2167c9d69688860e8961e3faa731702e" +checksum = "6065f1a4392b71819ec1ea1df1120673418bf386f50de1d6f54204d836d4349c" dependencies = [ "proc-macro2", "quote", @@ -1059,9 +1120,9 @@ dependencies = [ [[package]] name = "rust-embed-utils" -version = "8.7.0" +version = "8.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d55b95147fe01265d06b3955db798bdaed52e60e2211c41137701b3aba8e21" +checksum = "f6cc0c81648b20b70c491ff8cce00c1c3b223bb8ed2b5d41f0e54c6c4c0a3594" dependencies = [ "sha2", "walkdir", @@ -1078,8 +1139,8 @@ name = "rustix" version = "0.38.34" source = "git+https://github.com/Kernel-SU/rustix.git?branch=main#4a53fbc7cb7a07cabe87125cc21dbc27db316259" dependencies = [ - "bitflags 2.9.0", - "errno 0.3.11", + "bitflags 2.8.0", + "errno 0.3.10", "itoa", "libc", "linux-raw-sys 0.4.15", @@ -1093,8 +1154,8 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.9.0", - "errno 0.3.11", + "bitflags 2.8.0", + "errno 0.3.10", "libc", "linux-raw-sys 0.4.15", "windows-sys 0.59.0", @@ -1106,8 +1167,8 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" dependencies = [ - "bitflags 2.9.0", - "errno 0.3.11", + "bitflags 2.8.0", + "errno 0.3.10", "libc", "linux-raw-sys 0.9.4", "windows-sys 0.59.0", @@ -1172,7 +1233,7 @@ version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "cpufeatures", "digest", ] @@ -1183,7 +1244,7 @@ version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "cpufeatures", "digest", ] @@ -1232,9 +1293,9 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.19.1" +version = "3.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf" +checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" dependencies = [ "fastrand", "getrandom", @@ -1243,6 +1304,26 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "time" version = "0.3.41" @@ -1334,7 +1415,7 @@ version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "once_cell", "rustversion", "wasm-bindgen-macro", @@ -1582,7 +1663,7 @@ version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.8.0", ] [[package]] @@ -1616,13 +1697,12 @@ dependencies = [ [[package]] name = "zip" -version = "2.6.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dcb24d0152526ae49b9b96c1dcf71850ca1e0b882e4e28ed898a93c41334744" +checksum = "12598812502ed0105f607f941c386f43d441e00148fce9dec3ca5ffb0bde9308" dependencies = [ "arbitrary", "crc32fast", - "crossbeam-utils", "deflate64", "flate2", "indexmap", @@ -1635,13 +1715,19 @@ dependencies = [ [[package]] name = "zip-extensions" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79cdbf826e5a6eec81fc5a0d33cd7c09c31fd8f9918f15434f74c42d39ef337a" +checksum = "9f105becb0a5da773e655775dd05fee454ca1475bcc980ec9d940a02f42cee40" dependencies = [ "zip", ] +[[package]] +name = "zlib-rs" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "626bd9fa9734751fc50d6060752170984d7053f5a39061f524cda68023d4db8a" + [[package]] name = "zopfli" version = "0.8.2" diff --git a/userspace/ksud/build.rs b/userspace/ksud/build.rs index d7178fcd..b8337232 100644 --- a/userspace/ksud/build.rs +++ b/userspace/ksud/build.rs @@ -23,12 +23,7 @@ fn get_git_version() -> Result<(u32, String), std::io::Error> { .output()? .stdout, ) - .map_err(|_| { - std::io::Error::new( - std::io::ErrorKind::Other, - "Failed to read git describe stdout", - ) - })?; + .map_err(|_| std::io::Error::other("Failed to read git describe stdout"))?; let version_name = version_name.trim_start_matches('v').to_string(); Ok((version_code, version_name)) } diff --git a/userspace/ksud/src/cli.rs b/userspace/ksud/src/cli.rs index a336cbe4..bf4835f3 100644 --- a/userspace/ksud/src/cli.rs +++ b/userspace/ksud/src/cli.rs @@ -366,13 +366,13 @@ pub fn run() -> Result<()> { Commands::BootInfo { command } => match command { BootInfo::CurrentKmi => { let kmi = crate::boot_patch::get_current_kmi()?; - println!("{}", kmi); + println!("{kmi}"); // return here to avoid printing the error message return Ok(()); } BootInfo::SupportedKmi => { let kmi = crate::assets::list_supported_kmi()?; - kmi.iter().for_each(|kmi| println!("{}", kmi)); + kmi.iter().for_each(|kmi| println!("{kmi}")); return Ok(()); } }, @@ -384,7 +384,7 @@ pub fn run() -> Result<()> { }; if let Err(e) = &result { - log::error!("Error: {:?}", e); + log::error!("Error: {e:?}"); } result } diff --git a/userspace/ksud/src/debug.rs b/userspace/ksud/src/debug.rs index cd367587..6a693c10 100644 --- a/userspace/ksud/src/debug.rs +++ b/userspace/ksud/src/debug.rs @@ -30,7 +30,7 @@ fn set_kernel_param(uid: u32) -> Result<()> { fn get_pkg_uid(pkg: &str) -> Result { // stat /data/data/ let uid = rustix::fs::stat(format!("/data/data/{pkg}")) - .with_context(|| format!("stat /data/data/{}", pkg))? + .with_context(|| format!("stat /data/data/{pkg}"))? .st_uid; Ok(uid) } diff --git a/userspace/ksud/src/init_event.rs b/userspace/ksud/src/init_event.rs index 7d0e9915..e19ef425 100644 --- a/userspace/ksud/src/init_event.rs +++ b/userspace/ksud/src/init_event.rs @@ -31,7 +31,7 @@ pub fn on_post_data_fs() -> Result<()> { } else { // Then exec common post-fs-data scripts if let Err(e) = crate::module::exec_common_scripts("post-fs-data.d", true) { - warn!("exec common post-fs-data scripts failed: {}", e); + warn!("exec common post-fs-data scripts failed: {e}"); } } @@ -44,7 +44,7 @@ pub fn on_post_data_fs() -> Result<()> { if safe_mode { warn!("safe mode, skip post-fs-data scripts and disable all modules!"); if let Err(e) = crate::module::disable_all_modules() { - warn!("disable all modules failed: {}", e); + warn!("disable all modules failed: {e}"); } return Ok(()); } @@ -58,7 +58,7 @@ pub fn on_post_data_fs() -> Result<()> { } if let Err(e) = restorecon::restorecon() { - warn!("restorecon failed: {}", e); + warn!("restorecon failed: {e}"); } // load sepolicy.rule @@ -67,7 +67,7 @@ pub fn on_post_data_fs() -> Result<()> { } if let Err(e) = crate::profile::apply_sepolies() { - warn!("apply root profile sepolicy failed: {}", e); + warn!("apply root profile sepolicy failed: {e}"); } // mount temp dir @@ -88,12 +88,12 @@ pub fn on_post_data_fs() -> Result<()> { // exec modules post-fs-data scripts // TODO: Add timeout if let Err(e) = crate::module::exec_stage_script("post-fs-data", true) { - warn!("exec post-fs-data scripts failed: {}", e); + warn!("exec post-fs-data scripts failed: {e}"); } // load system.prop if let Err(e) = crate::module::load_system_prop() { - warn!("load system.prop failed: {}", e); + warn!("load system.prop failed: {e}"); } // mount module systemlessly by magic mount @@ -192,7 +192,7 @@ fn catch_bootlog(logname: &str, command: Vec<&str>) -> Result<()> { }; if let Err(e) = result { - warn!("Failed to start logcat: {:#}", e); + warn!("Failed to start logcat: {e:#}"); } Ok(()) diff --git a/userspace/ksud/src/module.rs b/userspace/ksud/src/module.rs index 96c4eba4..f84f316a 100644 --- a/userspace/ksud/src/module.rs +++ b/userspace/ksud/src/module.rs @@ -401,7 +401,7 @@ pub fn restore_uninstall_module(id: &str) -> Result<()> { } pub fn run_action(id: &str) -> Result<()> { - let action_script_path = format!("/data/adb/modules/{}/action.sh", id); + let action_script_path = format!("/data/adb/modules/{id}/action.sh"); exec_script(&action_script_path, true) } diff --git a/userspace/ksud/src/profile.rs b/userspace/ksud/src/profile.rs index 21574448..e2b3f350 100644 --- a/userspace/ksud/src/profile.rs +++ b/userspace/ksud/src/profile.rs @@ -70,9 +70,9 @@ pub fn apply_sepolies() -> Result<()> { }; let sepolicy = sepolicy.path(); if sepolicy::apply_file(&sepolicy).is_ok() { - log::info!("profile sepolicy applied: {:?}", sepolicy); + log::info!("profile sepolicy applied: {sepolicy:?}"); } else { - log::info!("profile sepolicy apply failed: {:?}", sepolicy); + log::info!("profile sepolicy apply failed: {sepolicy:?}"); } } Ok(()) diff --git a/userspace/ksud/src/sepolicy.rs b/userspace/ksud/src/sepolicy.rs index 90350cad..a627bc22 100644 --- a/userspace/ksud/src/sepolicy.rs +++ b/userspace/ksud/src/sepolicy.rs @@ -697,7 +697,7 @@ fn apply_one_rule<'a>(statement: &'a PolicyStatement<'a>, strict: bool) -> Resul for policy in policies { if !rustix::process::ksu_set_policy(&FfiPolicy::from(policy)) { - log::warn!("apply rule: {:?} failed.", statement); + log::warn!("apply rule: {statement:?} failed."); if strict { return Err(anyhow::anyhow!("apply rule {:?} failed.", statement)); } diff --git a/userspace/ksud/src/utils.rs b/userspace/ksud/src/utils.rs index a1602bef..e31c3387 100644 --- a/userspace/ksud/src/utils.rs +++ b/userspace/ksud/src/utils.rs @@ -104,12 +104,12 @@ pub fn is_safe_mode() -> bool { || getprop("ro.sys.safemode") .filter(|prop| prop == "1") .is_some(); - log::info!("safemode: {}", safemode); + log::info!("safemode: {safemode}"); if safemode { return true; } let safemode = ksucalls::check_kernel_safemode(); - log::info!("kernel_safemode: {}", safemode); + log::info!("kernel_safemode: {safemode}"); safemode }