aboutsummaryrefslogtreecommitdiff
path: root/modules/gdscript/gd_parser.cpp
diff options
context:
space:
mode:
authorFabio Alessandrelli2016-10-04 15:02:36 +0200
committerRémi Verschelde2016-10-09 17:34:23 +0200
commitba095b8dccdc347c898934d4d7a78b7d5b9c35e1 (patch)
tree68e92c34e018bd2aafbd9bd0400d2be1b059b322 /modules/gdscript/gd_parser.cpp
parent9593863a92915c4e0816ac4af013be2983f56ca5 (diff)
downloadgodot-ba095b8dccdc347c898934d4d7a78b7d5b9c35e1.tar.gz
godot-ba095b8dccdc347c898934d4d7a78b7d5b9c35e1.tar.zst
godot-ba095b8dccdc347c898934d4d7a78b7d5b9c35e1.zip
Add warning when (pre)loading paths with leading / (#4280 - #3106)
(cherry picked from commit e59820ac94b7c9706298d5559608937dfca332e5)
Diffstat (limited to 'modules/gdscript/gd_parser.cpp')
-rw-r--r--modules/gdscript/gd_parser.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/modules/gdscript/gd_parser.cpp b/modules/gdscript/gd_parser.cpp
index e829fa86b..eb33f0e75 100644
--- a/modules/gdscript/gd_parser.cpp
+++ b/modules/gdscript/gd_parser.cpp
@@ -303,6 +303,10 @@ GDParser::Node* GDParser::_parse_expression(Node *p_parent,bool p_static,bool p_
_set_error("expected string constant as 'preload' argument.");
return NULL;
}
+ if (path.begins_with("/")) {
+ _set_error("Paths cannot start with '/', absolute paths must start with \'res://\', \'user://\', or \'local://\'");
+ return NULL;
+ }
if (!path.is_abs_path() && base_path!="")
path=base_path+"/"+path;
path = path.replace("///","//").simplify_path();
@@ -2022,6 +2026,10 @@ void GDParser::_parse_extends(ClassNode *p_class) {
_set_error("'extends' constant must be a string.");
return;
}
+ if (((String)(constant)).begins_with("/")) {
+ _set_error("Paths cannot start with '/', absolute paths must start with \'res://\', \'user://\', or \'local://\'");
+ return;
+ }
p_class->extends_file=constant;
tokenizer->advance();