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;