From d48f4fd05f20de491970d77c123610a96ba8c316 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Tue, 29 Nov 2022 19:08:16 -0500 Subject: [PATCH] ramfs: Prevent creating files or directories named "." and "..". Fixes #18031. --- src/add-ons/kernel/file_systems/ramfs/kernel_interface.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/add-ons/kernel/file_systems/ramfs/kernel_interface.cpp b/src/add-ons/kernel/file_systems/ramfs/kernel_interface.cpp index ff362c6571..c065621e6c 100644 --- a/src/add-ons/kernel/file_systems/ramfs/kernel_interface.cpp +++ b/src/add-ons/kernel/file_systems/ramfs/kernel_interface.cpp @@ -794,6 +794,9 @@ ramfs_create(fs_volume* _volume, fs_vnode* _dir, const char *name, int openMode, // check directory } else if (!dir) { SET_ERROR(error, B_BAD_VALUE); + // check special names + } else if (strcmp(name, ".") == 0 || strcmp(name, "..") == 0) { + SET_ERROR(error, B_FILE_EXISTS); } else if (VolumeWriteLocker locker = volume) { NodeMTimeUpdater mTimeUpdater(dir); // directory deleted? @@ -1126,6 +1129,9 @@ ramfs_create_dir(fs_volume* _volume, fs_vnode* _dir, const char *name, int mode) // check directory } else if (!dir) { SET_ERROR(error, B_BAD_VALUE); + // check special names + } else if (strcmp(name, ".") == 0 || strcmp(name, "..") == 0) { + SET_ERROR(error, B_FILE_EXISTS); } else if (VolumeWriteLocker locker = volume) { NodeMTimeUpdater mTimeUpdater(dir); // directory deleted?