diff options
author | Kenpachi Developer <Kenpachi.Developer@gmx.de> | 2020-05-01 08:41:11 +0200 |
---|---|---|
committer | Kenpachi Developer <Kenpachi.Developer@gmx.de> | 2020-05-09 22:01:53 +0200 |
commit | 08922748cfc4cd30cbe5d2e6bdee9f2f7c4c7c39 (patch) | |
tree | 4fdee381714b738cc6af000f59e84c3a2399866f /src/map/atcommand.c | |
parent | 66de70164a1cd0fed59671e09bad7c2fca1d90eb (diff) | |
download | hercules-08922748cfc4cd30cbe5d2e6bdee9f2f7c4c7c39.tar.gz hercules-08922748cfc4cd30cbe5d2e6bdee9f2f7c4c7c39.tar.bz2 hercules-08922748cfc4cd30cbe5d2e6bdee9f2f7c4c7c39.tar.xz hercules-08922748cfc4cd30cbe5d2e6bdee9f2f7c4c7c39.zip |
Adjust size of fields holding a string variable's value to SCRIPT_STRING_VAR_LENGTH + 1
Also exclude NULL-terminator from string variable value length in inter-server communication.
Diffstat (limited to 'src/map/atcommand.c')
-rw-r--r-- | src/map/atcommand.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/map/atcommand.c b/src/map/atcommand.c index 91ddc3ef9..47a45a31e 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -8945,13 +8945,17 @@ ACMD(accinfo) /* [Ind] */ ACMD(set) { - char reg[SCRIPT_VARNAME_LENGTH+1], val[254]; + char reg[SCRIPT_VARNAME_LENGTH + 1]; + char val[SCRIPT_STRING_VAR_LENGTH + 1]; struct script_data* data; int toset = 0; bool is_str = false; size_t len; - if (!*message || (toset = sscanf(message, "%32s %253[^\n]", reg, val)) < 1) { + char format[20]; + safesnprintf(format, sizeof(format), "%%%ds %%%d[^\\n]", SCRIPT_VARNAME_LENGTH, SCRIPT_STRING_VAR_LENGTH); + + if (*message == '\0' || (toset = sscanf(message, format, reg, val)) < 1) { clif->message(fd, msg_fd(fd,1367)); // Usage: @set <variable name> <value> clif->message(fd, msg_fd(fd,1368)); // Usage: ex. "@set PoringCharVar 50" clif->message(fd, msg_fd(fd,1369)); // Usage: ex. "@set PoringCharVarSTR$ Super Duper String" |