From 8ba0d513fa0068a241a25fbb6db09315fa3309cc Mon Sep 17 00:00:00 2001 From: Juan Linietsky Date: Thu, 22 Nov 2018 23:21:03 -0300 Subject: Added missing path verification on Unix, closes #20762 --- drivers/unix/dir_access_unix.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'drivers/unix') diff --git a/drivers/unix/dir_access_unix.cpp b/drivers/unix/dir_access_unix.cpp index 929e67faa9..e4b652cdce 100644 --- a/drivers/unix/dir_access_unix.cpp +++ b/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); -- cgit v1.2.3