diff options
Diffstat (limited to 'src/helperfuncs.cpp')
-rw-r--r-- | src/helperfuncs.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/helperfuncs.cpp b/src/helperfuncs.cpp index ceb4711a9..388e9bb50 100644 --- a/src/helperfuncs.cpp +++ b/src/helperfuncs.cpp @@ -391,6 +391,38 @@ long InspIRCd::LocalUserCount() return (local_users.size() - this->UnregisteredUserCount()); } +bool InspIRCd::IsValidMask(const std::string &mask) +{ + char* dest = (char*)mask.c_str(); + int exclamation = 0; + int atsign = 0; + + for (char* i = dest; *i; i++) + { + /* out of range character, bad mask */ + if (*i < 32 || *i > 126) + { + return false; + } + + switch (*i) + { + case '!': + exclamation++; + break; + case '@': + atsign++; + break; + } + } + + /* valid masks only have 1 ! and @ */ + if (exclamation != 1 || atsign != 1) + return false; + + return true; +} + /* true for valid channel name, false else */ bool InspIRCd::IsChannel(const char *chname) { |