diff options
| author | Rémi Verschelde <remi@verschelde.fr> | 2016-10-09 14:16:47 +0200 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-10-09 14:16:47 +0200 | 
| commit | fda72354c99d03dfdd34a072fdeae9877f49eee3 (patch) | |
| tree | 9358933e601344a4bd07e89b659ce2277b9c0141 | |
| parent | a3bac99c1c034af30ab5ea0f0650d81a7eb4c349 (diff) | |
| parent | e59820ac94b7c9706298d5559608937dfca332e5 (diff) | |
Merge pull request #6702 from Faless/load_error_leading_slash
Add error when (pre)loading paths with leading / (#4280 - #3106)
| -rw-r--r-- | modules/gdscript/gd_functions.cpp | 7 | ||||
| -rw-r--r-- | modules/gdscript/gd_parser.cpp | 8 | 
2 files changed, 14 insertions, 1 deletions
diff --git a/modules/gdscript/gd_functions.cpp b/modules/gdscript/gd_functions.cpp index a565e866d0..0369e323bc 100644 --- a/modules/gdscript/gd_functions.cpp +++ b/modules/gdscript/gd_functions.cpp @@ -840,8 +840,13 @@ void GDFunctions::call(Function p_func,const Variant **p_args,int p_arg_count,Va  				r_error.error=Variant::CallError::CALL_ERROR_INVALID_ARGUMENT;  				r_error.argument=0;  				r_ret=Variant(); +			} else if(((String)(*p_args[0])).begins_with("/")) { +				r_error.error=Variant::CallError::CALL_ERROR_INVALID_ARGUMENT; +				r_error.argument=0; +				r_ret=RTR("Paths cannot start with '/', absolute paths must start with \'res://\', \'user://\', or \'local://\'"); +			} else { +				r_ret=ResourceLoader::load(*p_args[0]);  			} -			r_ret=ResourceLoader::load(*p_args[0]);  		} break;  		case INST2DICT: { diff --git a/modules/gdscript/gd_parser.cpp b/modules/gdscript/gd_parser.cpp index 8f4f5ef4ca..2ec27507c2 100644 --- a/modules/gdscript/gd_parser.cpp +++ b/modules/gdscript/gd_parser.cpp @@ -307,6 +307,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(); @@ -2109,6 +2113,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();  |