Only accept UTF-8 directory entries

This commit is contained in:
topjohnwu
2025-04-15 00:19:28 -07:00
committed by John Wu
parent 92a42d901f
commit 7a207d4ccf
7 changed files with 50 additions and 55 deletions
+1 -1
View File
@@ -16,11 +16,11 @@ use logging::{android_logging, setup_logfile, zygisk_close_logd, zygisk_get_logd
use mount::{find_preinit_device, revert_unmount};
use resetprop::{persist_delete_prop, persist_get_prop, persist_get_props, persist_set_prop};
use socket::{recv_fd, recv_fds, send_fd, send_fds};
use su::{pump_tty, get_pty_num, restore_stdin};
use std::fs::File;
use std::mem::ManuallyDrop;
use std::ops::DerefMut;
use std::os::fd::FromRawFd;
use su::{get_pty_num, pump_tty, restore_stdin};
use zygisk::zygisk_should_load_module;
#[path = "../include/consts.rs"]
+1 -1
View File
@@ -157,7 +157,7 @@ fn find_apk_path(pkg: &str, buf: &mut dyn Utf8CStrBuf) -> LoggedResult<()> {
if !e.is_dir() {
return Ok(Skip);
}
let name_bytes = e.name().to_bytes();
let name_bytes = e.name().as_bytes();
if name_bytes.starts_with(pkg.as_bytes()) && name_bytes[pkg.len()] == b'-' {
// Found the APK path, we can abort now
e.path(buf)?;
+2 -4
View File
@@ -164,10 +164,8 @@ pub fn persist_get_props(mut prop_cb: Pin<&mut PropCb>) {
let mut dir = Directory::open(cstr!(PERSIST_PROP_DIR))?;
dir.pre_order_walk(|e| {
if e.is_file() {
if let Ok(name) = Utf8CStr::from_cstr(e.name()) {
if let Ok(mut value) = file_get_prop(name) {
prop_cb.exec(name, Utf8CStr::from_string(&mut value));
}
if let Ok(mut value) = file_get_prop(e.name()) {
prop_cb.exec(e.name(), Utf8CStr::from_string(&mut value));
}
}
// Do not traverse recursively
+1 -1
View File
@@ -3,4 +3,4 @@ mod db;
mod pts;
pub use daemon::SuInfo;
pub use pts::{pump_tty, get_pty_num, restore_stdin};
pub use pts::{get_pty_num, pump_tty, restore_stdin};
+1 -1
View File
@@ -191,7 +191,7 @@ impl MagiskD {
.join("zygisk");
// Create the unloaded marker file
if let Ok(dir) = Directory::open(&path) {
dir.openat_as_file(cstr!("unloaded").as_cstr(), O_CREAT | O_RDONLY, 0o644)
dir.openat_as_file(cstr!("unloaded"), O_CREAT | O_RDONLY, 0o644)
.log()
.ok();
}