aboutsummaryrefslogtreecommitdiff
path: root/src/modules/m_silence.cpp
diff options
context:
space:
mode:
authorGravatar Sadie Powell2022-11-23 22:23:35 +0000
committerGravatar Sadie Powell2022-11-23 22:23:35 +0000
commit05ebc7fdaa5e476ccf3c1c3d9313ca6a44b90b43 (patch)
tree657008bd6c32a368fecc2cc3848853bbbdff2251 /src/modules/m_silence.cpp
parentFix matching partially expanded IPv6 addresses. (diff)
Allow silence flag metadata to contain unknown flags.
This prevents breaking link compatibility if we ever add more silence flags in the future.
Diffstat (limited to 'src/modules/m_silence.cpp')
-rw-r--r--src/modules/m_silence.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/modules/m_silence.cpp b/src/modules/m_silence.cpp
index 5065aeb2e..aeb9373ab 100644
--- a/src/modules/m_silence.cpp
+++ b/src/modules/m_silence.cpp
@@ -105,7 +105,7 @@ class SilenceEntry
}
// Converts a flag list to a bitmask.
- static bool FlagsToBits(const std::string& flags, uint32_t& out)
+ static bool FlagsToBits(const std::string& flags, uint32_t& out, bool strict)
{
out = SF_NONE;
for (std::string::const_iterator flag = flags.begin(); flag != flags.end(); ++flag)
@@ -146,6 +146,8 @@ class SilenceEntry
out |= SF_EXEMPT;
break;
default:
+ if (!strict)
+ continue;
out = SF_NONE;
return false;
}
@@ -228,7 +230,7 @@ class SilenceExtItem : public SimpleExtItem<SilenceList>
// Try to parse the flags.
uint32_t flags;
- if (!SilenceEntry::FlagsToBits(flagstr, flags))
+ if (!SilenceEntry::FlagsToBits(flagstr, flags, false))
{
ServerInstance->Logs->Log(MODNAME, LOG_DEBUG, "Malformed silence flags received for %s: %s",
user->uuid.c_str(), flagstr.c_str());
@@ -373,7 +375,7 @@ class CommandSilence : public SplitCommand
uint32_t flags = SilenceEntry::SF_DEFAULT;
if (parameters.size() > 1)
{
- if (!SilenceEntry::FlagsToBits(parameters[1], flags))
+ if (!SilenceEntry::FlagsToBits(parameters[1], flags, true))
{
user->WriteNumeric(ERR_SILENCE, mask, parameters[1], "You specified one or more invalid SILENCE flags");
return CMD_FAILURE;