From e9f2c09012aec5c5a58b6c20a187d5de08b2565b Mon Sep 17 00:00:00 2001 From: ClawSeven Date: Mon, 29 Jan 2024 15:49:39 +0800 Subject: [PATCH] [libos] Fix readlinkat with non-positive bufsize --- src/libos/src/fs/syscalls.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/libos/src/fs/syscalls.rs b/src/libos/src/fs/syscalls.rs index 3e21aece..35b495de 100644 --- a/src/libos/src/fs/syscalls.rs +++ b/src/libos/src/fs/syscalls.rs @@ -559,6 +559,9 @@ pub fn do_readlinkat(dirfd: i32, path: *const i8, buf: *mut u8, size: usize) -> .to_string_lossy() .into_owned(); let buf = { + if size == 0 { + return_errno!(EINVAL, "bufsiz is not a positive number"); + } from_user::check_array(buf, size)?; unsafe { std::slice::from_raw_parts_mut(buf, size) } };