From 2cf8f0ee6b4f9a27af5b79d77da12791d4bd1ff3 Mon Sep 17 00:00:00 2001 From: X512 Date: Wed, 8 Jan 2020 01:53:33 +0900 Subject: [PATCH] kernel: add assert in _user_read_dir * This will help catch bugs such as in #15607. Change-Id: I25b28932f9db4e2abe8499dd829c910bb565086b Reviewed-on: https://review.haiku-os.org/c/haiku/+/2082 Reviewed-by: waddlesplash --- src/system/kernel/fs/fd.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/system/kernel/fs/fd.cpp b/src/system/kernel/fs/fd.cpp index e7e1dc68cc..91fe26c08b 100644 --- a/src/system/kernel/fs/fd.cpp +++ b/src/system/kernel/fs/fd.cpp @@ -984,6 +984,8 @@ _user_read_dir(int fd, struct dirent* userBuffer, size_t bufferSize, if (status != B_OK) return status; + ASSERT(count <= maxCount); + // copy the buffer back -- determine the total buffer size first size_t sizeToCopy = 0; BytePointer entry = buffer; @@ -993,6 +995,8 @@ _user_read_dir(int fd, struct dirent* userBuffer, size_t bufferSize, entry += length; } + ASSERT(sizeToCopy <= bufferSize); + if (user_memcpy(userBuffer, buffer, sizeToCopy) != B_OK) return B_BAD_ADDRESS;