From b427514f689d71071806eb75777f5dec322e8925 Mon Sep 17 00:00:00 2001 From: Marvin Friedrich Date: Mon, 23 Dec 2024 02:13:55 +0100 Subject: [PATCH] vfs: Fix bounds check on kmesg read --- kernel/fs/vfs.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/kernel/fs/vfs.c b/kernel/fs/vfs.c index b724a2e..21607b8 100644 --- a/kernel/fs/vfs.c +++ b/kernel/fs/vfs.c @@ -30,8 +30,11 @@ usize kmesg_cap; isize terminal_kmesg_read(Handle* self, FileDescriptor* fd, void* output_buffer, usize amount, off_t offset) { - if (amount > kmesg_len) - amount = kmesg_len; + if (offset > kmesg_len) + return 0; + + if (offset + amount > kmesg_len) + amount = kmesg_len - offset; memcpy(output_buffer, kmesg_buffer + offset, amount); return amount;