From 3e47ed10fd0099f5d47fb49cf2582112fd70a7e7 Mon Sep 17 00:00:00 2001 From: Marsman1996 Date: Wed, 25 Dec 2024 21:00:15 +0800 Subject: [PATCH] Check name when `lookup_child` in `TaskDirOps` --- kernel/src/fs/procfs/pid/task.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/kernel/src/fs/procfs/pid/task.rs b/kernel/src/fs/procfs/pid/task.rs index 2f2c01d84..adcbdbf7c 100644 --- a/kernel/src/fs/procfs/pid/task.rs +++ b/kernel/src/fs/procfs/pid/task.rs @@ -63,8 +63,12 @@ impl DirOps for ThreadDirOps { impl DirOps for TaskDirOps { fn lookup_child(&self, this_ptr: Weak, name: &str) -> Result> { + let Ok(tid) = name.parse::() else { + return_errno_with_message!(Errno::ENOENT, "Can not parse name to u32 type"); + }; + for task in self.0.tasks().lock().as_slice() { - if task.as_posix_thread().unwrap().tid() != name.parse::().unwrap() { + if task.as_posix_thread().unwrap().tid() != tid { continue; } return Ok(ThreadDirOps::new_inode(self.0.clone(), this_ptr));