]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/mode.cpp
Init the sequence indicator to avoid undefined behaviour. Thx owine.
[user/henk/code/inspircd.git] / src / mode.cpp
index c388742293d03c8375983e8d37b0c55e2f5c5fe0..4573cca074e40078ca6f6e2d163ecb66ab700c9b 100644 (file)
@@ -484,7 +484,7 @@ void ModeParser::Process(const char** parameters, int pcnt, userrec *user, bool
 
                                                                        /* Yerk, invalid! */
                                                                        if ((parameter.find(':') == 0) || (parameter.rfind(' ') != std::string::npos))
-                                                                               parameter = "";
+                                                                               parameter.clear();
                                                                }
                                                                else
                                                                {
@@ -783,6 +783,9 @@ std::string ModeParser::ChannelModeList()
 
        for (unsigned char mode = 'A'; mode <= 'z'; mode++)
        {
+               if ((!ServerInstance->Config->AllowHalfop) && (mode == 'h'))
+                       continue;
+
                unsigned char pos = (mode-65) | MASK_CHANNEL;
 
                if (modehandlers[pos])
@@ -799,6 +802,9 @@ std::string ModeParser::ParaModeList()
 
        for (unsigned char mode = 'A'; mode <= 'z'; mode++)
        {
+               if ((!ServerInstance->Config->AllowHalfop) && (mode == 'h'))
+                       continue;
+
                unsigned char pos = (mode-65) | MASK_CHANNEL;
 
                if ((modehandlers[pos]) && (modehandlers[pos]->GetNumParams(true)))
@@ -859,6 +865,9 @@ std::string ModeParser::ChanModes()
 
        for (unsigned char mode = 'A'; mode <= 'z'; mode++)
        {
+               if ((!ServerInstance->Config->AllowHalfop) && (mode == 'h'))
+                       continue;
+
                unsigned char pos = (mode-65) | MASK_CHANNEL;
                 /* One parameter when adding */
                if (modehandlers[pos])
@@ -912,6 +921,9 @@ std::string ModeParser::BuildPrefixes()
 
        for (unsigned char mode = 'A'; mode <= 'z'; mode++)
        {
+               if ((!ServerInstance->Config->AllowHalfop) && (mode == 'h'))
+                       continue;
+
                unsigned char pos = (mode-65) | MASK_CHANNEL;
 
                if ((modehandlers[pos]) && (modehandlers[pos]->GetPrefix()))