diff options
author | Juan Linietsky <reduzio@gmail.com> | 2018-11-22 23:21:03 -0300 |
---|---|---|
committer | Juan Linietsky <reduzio@gmail.com> | 2018-11-22 23:21:03 -0300 |
commit | 8ba0d513fa0068a241a25fbb6db09315fa3309cc (patch) | |
tree | 31043d26f857d06d30a8387e833654c1db1dea09 /drivers/unix | |
parent | cdafb7bce2f0c9961cd84453b471345fe10c3043 (diff) |
Added missing path verification on Unix, closes #20762
Diffstat (limited to 'drivers/unix')
-rw-r--r-- | drivers/unix/dir_access_unix.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
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); |