diff options
author | linuxdaemon <linuxdaemon@users.noreply.github.com> | 2018-12-21 12:37:22 -0600 |
---|---|---|
committer | Peter Powell <petpow@saberuk.com> | 2018-12-21 19:37:22 +0100 |
commit | 7530285740c2db1bc4457859b0d5f2436e0ed113 (patch) | |
tree | 89635613725a1b7ad6e262d7e3035a518d42e8d2 /src/coremods/core_channel/cmd_invite.cpp | |
parent | 60ae49b62a371791ebbd9e4b131e33b857873f06 (diff) |
Only parse valid durations, don't treat invalid multipliers as seconds (#1538)
Diffstat (limited to 'src/coremods/core_channel/cmd_invite.cpp')
-rw-r--r-- | src/coremods/core_channel/cmd_invite.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/coremods/core_channel/cmd_invite.cpp b/src/coremods/core_channel/cmd_invite.cpp index ebb95f1b4..c26318337 100644 --- a/src/coremods/core_channel/cmd_invite.cpp +++ b/src/coremods/core_channel/cmd_invite.cpp @@ -51,7 +51,15 @@ CmdResult CommandInvite::Handle(User* user, const Params& parameters) if (parameters.size() >= 3) { if (IS_LOCAL(user)) - timeout = ServerInstance->Time() + InspIRCd::Duration(parameters[2]); + { + unsigned long duration; + if (!InspIRCd::Duration(parameters[2], duration)) + { + user->WriteNotice("*** Invalid duration for invite"); + return CMD_FAILURE; + } + timeout = ServerInstance->Time() + duration; + } else if (parameters.size() > 3) timeout = ConvToNum<time_t>(parameters[3]); } |