summaryrefslogtreecommitdiff
path: root/src/map/atcommand.c
diff options
context:
space:
mode:
authorKenpachi Developer <Kenpachi.Developer@gmx.de>2020-05-01 08:41:11 +0200
committerKenpachi Developer <Kenpachi.Developer@gmx.de>2020-05-09 22:01:53 +0200
commit08922748cfc4cd30cbe5d2e6bdee9f2f7c4c7c39 (patch)
tree4fdee381714b738cc6af000f59e84c3a2399866f /src/map/atcommand.c
parent66de70164a1cd0fed59671e09bad7c2fca1d90eb (diff)
downloadhercules-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.c8
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"