From ffacc651078a97acecc77ff70ffafb0a962a584d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Wed, 30 Aug 2006 23:37:57 +0000 Subject: [PATCH] Imported the bfs_rename() permission check fix from the Haiku version. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18720 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../kernel/file_systems/bfs/r5/kernel_interface_r5.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/tests/add-ons/kernel/file_systems/bfs/r5/kernel_interface_r5.cpp b/src/tests/add-ons/kernel/file_systems/bfs/r5/kernel_interface_r5.cpp index ba88fc8f2b..511a852407 100644 --- a/src/tests/add-ons/kernel/file_systems/bfs/r5/kernel_interface_r5.cpp +++ b/src/tests/add-ons/kernel/file_systems/bfs/r5/kernel_interface_r5.cpp @@ -1159,11 +1159,18 @@ bfs_rename(void *_ns, void *_oldDir, const char *oldName, void *_newDir, const c if (oldDirectory == newDirectory && !strcmp(oldName, newName)) return B_OK; + // are we allowed to do what we've been told? + status_t status = oldDirectory->CheckPermissions(W_OK); + if (status == B_OK) + status = newDirectory->CheckPermissions(W_OK); + if (status < B_OK) + return status; + RecursiveLocker locker(volume->Lock()); // get the directory's tree, and a pointer to the inode which should be changed BPlusTree *tree; - status_t status = oldDirectory->GetTree(&tree); + status = oldDirectory->GetTree(&tree); if (status < B_OK) RETURN_ERROR(status);