⛏️ index : haiku.git

author Augustin Cavalier <waddlesplash@gmail.com> 2022-11-29 19:08:16.0 -05:00:00
committer waddlesplash <waddlesplash@gmail.com> 2022-11-30 1:14:11.0 +00:00:00
commit
1306b294dbceffb0bdd684f21df1e16eeb37fc9f [patch]
tree
00f6afb4a7f7e2389a87d8432cbe498fba1144f3
parent
12d5284dccf1e4cef073ed4599477fdac3975ab6
download
1306b294dbceffb0bdd684f21df1e16eeb37fc9f.tar.gz

ramfs: Prevent creating files or directories named "." and "..".

Fixes #18031.
(cherry picked from commit d48f4fd05f20de491970d77c123610a96ba8c316)

Change-Id: I0ba9f12874cea734818c8b6a7b97614bf9c2955e
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5844
Reviewed-by: waddlesplash <waddlesplash@gmail.com>

Diff

 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 14f98ac..289c3f7 100644
--- a/src/add-ons/kernel/file_systems/ramfs/kernel_interface.cpp
+++ b/src/add-ons/kernel/file_systems/ramfs/kernel_interface.cpp
@@ -793,6 +793,9 @@
	// 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?
@@ -1125,6 +1128,9 @@
	// 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?