From f9ba5c92e3db310ec7386d98784ac9b6beff175c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 13 Aug 2009 12:05:20 +0000 Subject: [PATCH] * Let fix_dirent() handle invalid reclen's gracefully. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32306 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/fs/vfs.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/system/kernel/fs/vfs.cpp b/src/system/kernel/fs/vfs.cpp index 51137e6e85..9acaf3b98e 100644 --- a/src/system/kernel/fs/vfs.cpp +++ b/src/system/kernel/fs/vfs.cpp @@ -5563,6 +5563,10 @@ fix_dirent(struct vnode* parent, struct dirent* userEntry, ASSERT(entry->d_reclen >= sizeof(struct dirent)); + // This hints to a problem in the file system implementation + if (entry->d_reclen < sizeof(struct dirent)) + return B_BAD_DATA; + if (user_memcpy(entry->d_name, userEntry->d_name, entry->d_reclen + 1 - sizeof(struct dirent)) != B_OK) return B_BAD_ADDRESS;