Browse Source

Added missing path verification on Unix, closes #20762

Juan Linietsky 6 years ago
parent
commit
8ba0d513fa
1 changed files with 11 additions and 0 deletions
  1. 11 0
      drivers/unix/dir_access_unix.cpp

+ 11 - 0
drivers/unix/dir_access_unix.cpp

@@ -328,6 +328,17 @@ Error DirAccessUnix::change_dir(String p_dir) {
 		return ERR_INVALID_PARAMETER;
 	}
 
+	String base = _get_root_path();
+	if (base != String()) {
+		ERR_FAIL_COND_V(getcwd(real_current_dir_name, 2048) == NULL, ERR_BUG);
+		String new_dir;
+		new_dir.parse_utf8(real_current_dir_name);
+
+		if (!new_dir.begins_with(base)) {
+			try_dir = current_dir; //revert
+		}
+	}
+
 	// the directory exists, so set current_dir to try_dir
 	current_dir = try_dir;
 	ERR_FAIL_COND_V(chdir(prev_dir.utf8().get_data()) != 0, ERR_BUG);