diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-12-23 03:29:59 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-12-23 03:29:59 +0300 |
commit | 750ec4a4e717b37a9a91990a9f06a3f071cc3fc6 (patch) | |
tree | 8fc96cbd28a1cc56dec7f99796443f90d1ce71fb /src/map/script.c | |
parent | 966ae872aed88253ae645c07b66ec6bd19d619df (diff) | |
parent | feff016d6bc7e811d03c958da754df20f630b33b (diff) | |
download | hercules-750ec4a4e717b37a9a91990a9f06a3f071cc3fc6.tar.gz hercules-750ec4a4e717b37a9a91990a9f06a3f071cc3fc6.tar.bz2 hercules-750ec4a4e717b37a9a91990a9f06a3f071cc3fc6.tar.xz hercules-750ec4a4e717b37a9a91990a9f06a3f071cc3fc6.zip |
Merge pull request #1003 from HerculesWS/865-var_length
Merge of #866 and #867
Diffstat (limited to 'src/map/script.c')
-rw-r--r-- | src/map/script.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/map/script.c b/src/map/script.c index 7a5292159..829555820 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -2726,6 +2726,13 @@ struct script_data *get_val(struct script_state* st, struct script_data* data) { prefix = name[0]; postfix = name[strlen(name) - 1]; + if (strlen(name) > SCRIPT_VARNAME_LENGTH) { + ShowError("script_get_val: variable name too long. '%s'\n", name); + script->reportsrc(st); + st->state = END; + return data; + } + //##TODO use reference_tovariable(data) when it's confirmed that it works [FlavioJS] if( !reference_toconstant(data) && not_server_variable(prefix) ) { sd = script->rid2sd(st); @@ -3142,6 +3149,13 @@ void set_reg_instance_num(struct script_state* st, int64 num, const char* name, int set_reg(struct script_state* st, TBL_PC* sd, int64 num, const char* name, const void* value, struct reg_db *ref) { char prefix = name[0]; + if (strlen(name) > SCRIPT_VARNAME_LENGTH) { + ShowError("script:set_reg: variable name too long. '%s'\n", name); + script->reportsrc(st); + st->state = END; + return 0; + } + if( is_string_variable(name) ) {// string variable const char *str = (const char*)value; |