diff options
author | Kenpachi Developer <Kenpachi.Developer@gmx.de> | 2020-11-14 08:50:48 +0100 |
---|---|---|
committer | Jesusaves <cpntb1@ymail.com> | 2021-02-14 15:55:07 -0300 |
commit | 62b161fdb13bf6336d919ff9088548b652761e05 (patch) | |
tree | abbab53a0ffc9004e9c2bdd8bc988e4642106580 /src | |
parent | 77aef58085f166d0ce0b3b06d81dde9a35a05e0d (diff) | |
download | hercules-62b161fdb13bf6336d919ff9088548b652761e05.tar.gz hercules-62b161fdb13bf6336d919ff9088548b652761e05.tar.bz2 hercules-62b161fdb13bf6336d919ff9088548b652761e05.tar.xz hercules-62b161fdb13bf6336d919ff9088548b652761e05.zip |
Add check for receiver ID is in valid range to rodex_sendmail_sub()
Diffstat (limited to 'src')
-rw-r--r-- | src/map/script.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/src/map/script.c b/src/map/script.c index 46e5528e5..a63f1e835 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -25222,11 +25222,24 @@ static BUILDIN(navigateto) static bool rodex_sendmail_sub(struct script_state *st, struct rodex_message *msg) { const char *sender_name, *title, *body; + const char *func_name = script->getfuncname(st); + int receiver_id = script_getnum(st, 2); - if (strcmp(script->getfuncname(st), "rodex_sendmail_acc") == 0 || strcmp(script->getfuncname(st), "rodex_sendmail_acc2") == 0) - msg->receiver_accountid = script_getnum(st, 2); - else - msg->receiver_id = script_getnum(st, 2); + if (strcmp(func_name, "rodex_sendmail_acc") == 0 || strcmp(func_name, "rodex_sendmail_acc2") == 0) { + if (receiver_id < START_ACCOUNT_NUM || receiver_id > END_ACCOUNT_NUM) { + ShowError("script:rodex_sendmail: Invalid receiver account ID %d passed!\n", receiver_id); + return false; + } + + msg->receiver_accountid = receiver_id; + } else { + if (receiver_id < START_CHAR_NUM) { + ShowError("script:rodex_sendmail: Invalid receiver character ID %d passed!\n", receiver_id); + return false; + } + + msg->receiver_id = receiver_id; + } sender_name = script_getstr(st, 3); if (strlen(sender_name) >= NAME_LENGTH) { |