diff --git a/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp b/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp index 4c6f15798e..70c1a5c843 100644 --- a/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp +++ b/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp @@ -1015,6 +1015,10 @@ bfs_rename(fs_volume *_volume, fs_vnode *_oldDir, const char *oldName, if (vnode.Get(&other) < B_OK) return B_NAME_IN_USE; + // only allowed, if either both nodes are directories or neither is + if (inode->IsDirectory() != other->IsDirectory()) + return other->IsDirectory() ? B_IS_A_DIRECTORY : B_NOT_A_DIRECTORY; + status = newDirectory->Remove(transaction, newName, NULL, other->IsDirectory()); if (status < B_OK)