]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Fix an off by one error in various bitsets.
authorSadie Powell <sadie@witchery.services>
Fri, 14 May 2021 13:26:46 +0000 (14:26 +0100)
committerSadie Powell <sadie@witchery.services>
Fri, 14 May 2021 13:26:46 +0000 (14:26 +0100)
include/modules/who.h
src/coremods/core_who.cpp
src/modules/m_anticaps.cpp
src/modules/m_blockcaps.cpp
src/modules/m_chghost.cpp
src/modules/m_hostchange.cpp
src/modules/m_sethost.cpp

index 36aecbc03072e28086e08b57fa0584cfef6054f9..d5fcba9777ab848a482190f26a93d771ee61d7f5 100644 (file)
@@ -51,8 +51,10 @@ class Who::EventListener : public Events::ModuleEventListener
 class Who::Request
 {
  public:
+       typedef std::bitset<UCHAR_MAX + 1> CharState;
+
        /** The flags for matching users to include. */
-       std::bitset<UCHAR_MAX> flags;
+       CharState flags;
 
        /** Whether we are matching using a wildcard or a flag. */
        bool fuzzy_match;
@@ -67,7 +69,7 @@ class Who::Request
        bool whox;
 
        /** The fields to include in the WHOX response. */
-       std::bitset<UCHAR_MAX> whox_fields;
+       CharState whox_fields;
 
        /** A user specified label for the WHOX response. */
        std::string whox_querytype;
index aa19efe97db3f156ce432fa394750e3911c03818..b853ef4b19fea9e182ac713d130dcec912dc21ea 100644 (file)
@@ -80,7 +80,7 @@ struct WhoData : public Who::Request
                // If flags have been specified by the source.
                if (parameters.size() > 1)
                {
-                       std::bitset<UCHAR_MAX>* current_bitset = &flags;
+                       CharState* current_bitset = &flags;
                        for (std::string::const_iterator iter = parameters[1].begin(); iter != parameters[1].end(); ++iter)
                        {
                                unsigned char chr = static_cast<unsigned char>(*iter);
index 2c39dce98022c57d3d00a3f413d9c943e9a338cf..8b6cd50f530cc27af4cc6fba16d6845e8b5d3673 100644 (file)
@@ -158,8 +158,8 @@ class ModuleAntiCaps : public Module
 {
  private:
        CheckExemption::EventProvider exemptionprov;
-       std::bitset<UCHAR_MAX> uppercase;
-       std::bitset<UCHAR_MAX> lowercase;
+       std::bitset<UCHAR_MAX + 1> uppercase;
+       std::bitset<UCHAR_MAX + 1> lowercase;
        AntiCapsMode mode;
 
        void CreateBan(Channel* channel, User* user, bool mute)
index 3bf9c98d0940ab44354cffb481359b6b0c95f103..c79ff15f5524a6a97582609ea71d5f40f86d2230 100644 (file)
@@ -34,8 +34,8 @@ class ModuleBlockCAPS : public Module
        SimpleChannelModeHandler bc;
        unsigned int percent;
        unsigned int minlen;
-       std::bitset<UCHAR_MAX> lowercase;
-       std::bitset<UCHAR_MAX> uppercase;
+       std::bitset<UCHAR_MAX + 1> lowercase;
+       std::bitset<UCHAR_MAX + 1> uppercase;
 
 public:
        ModuleBlockCAPS()
index d8f306699c1ae27a394926157c81682e278082a6..45709fa4452be891724b3e6107e6caa583424c64 100644 (file)
@@ -30,7 +30,7 @@
 class CommandChghost : public Command
 {
  public:
-       std::bitset<UCHAR_MAX> hostmap;
+       std::bitset<UCHAR_MAX + 1> hostmap;
 
        CommandChghost(Module* Creator)
                : Command(Creator,"CHGHOST", 2)
index 47c831d2970269ef4b0d19d9a6465888ced0aabc..56ea337fd041c24344688df10380765650b8a33a 100644 (file)
@@ -106,7 +106,7 @@ typedef std::vector<HostRule> HostRules;
 class ModuleHostChange : public Module
 {
 private:
-       std::bitset<UCHAR_MAX> hostmap;
+       std::bitset<UCHAR_MAX + 1> hostmap;
        HostRules hostrules;
 
        std::string CleanName(const std::string& name)
index 98067b45923104d4b3a938e9b7bff6727f15443d..18c964d1bb80f8a5e3899d89f200286bdc0eefe2 100644 (file)
@@ -30,7 +30,7 @@
 class CommandSethost : public Command
 {
  public:
-       std::bitset<UCHAR_MAX> hostmap;
+       std::bitset<UCHAR_MAX + 1> hostmap;
 
        CommandSethost(Module* Creator)
                : Command(Creator,"SETHOST", 1)