]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Reasonably sized fix - when adding modes in modules, be sure to check the return...
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>
Thu, 28 Dec 2006 16:55:50 +0000 (16:55 +0000)
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>
Thu, 28 Dec 2006 16:55:50 +0000 (16:55 +0000)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6137 e03df62e-2008-0410-955e-edbf42e46eb7

28 files changed:
src/modules/m_banexception.cpp
src/modules/m_blockcaps.cpp
src/modules/m_blockcolor.cpp
src/modules/m_botmode.cpp
src/modules/m_censor.cpp
src/modules/m_chanfilter.cpp
src/modules/m_chanprotect.cpp
src/modules/m_cloaking.cpp
src/modules/m_deaf.cpp
src/modules/m_helpop.cpp
src/modules/m_hidechans.cpp
src/modules/m_hideoper.cpp
src/modules/m_inviteexception.cpp
src/modules/m_joinflood.cpp
src/modules/m_kicknorejoin.cpp
src/modules/m_knock.cpp
src/modules/m_messageflood.cpp
src/modules/m_noctcp.cpp
src/modules/m_noinvite.cpp
src/modules/m_nokicks.cpp
src/modules/m_nonotice.cpp
src/modules/m_operchans.cpp
src/modules/m_redirect.cpp
src/modules/m_services.cpp
src/modules/m_services_account.cpp
src/modules/m_showwhois.cpp
src/modules/m_sslmodes.cpp
src/modules/m_stripcolor.cpp

index d8216a1f22a11b36e87b083fd469e6b446622a88..bc0d7f009ea5602e41f59537f86a5f488d43e182 100644 (file)
@@ -52,7 +52,8 @@ public:
        : Module::Module(Me)
        {
                be = new BanException(ServerInstance);
-               ServerInstance->AddMode(be, 'e');
+               if (!ServerInstance->AddMode(be, 'e'))
+                       throw ModuleException("Could not add new modes!");
        }
        
        virtual void Implements(char* List)
index 0d76c9c84d914cc82272b3f4fcd3ebd19eafea1c..b67c496f4a8d469ede055f9dffe01528b9e20cd1 100644 (file)
@@ -61,7 +61,8 @@ public:
        {
                OnRehash("");
                bc = new BlockCaps(ServerInstance);
-               ServerInstance->AddMode(bc, 'P');
+               if (!ServerInstance->AddMode(bc, 'P'))
+                       throw ModuleException("Could not add new modes!");
        }
 
        void Implements(char* List)
index 38da18cbe48aa16bf73c686653e22c1938bdca03..df28f1807a59c726876b551998ad0ef2fad8008b 100644 (file)
@@ -60,7 +60,8 @@ class ModuleBlockColour : public Module
        {
                
                bc = new BlockColor(ServerInstance);
-               ServerInstance->AddMode(bc, 'c');
+               if (!ServerInstance->AddMode(bc, 'c'))
+                       throw ModuleException("Could not add new modes!");
        }
 
        void Implements(char* List)
index 1007fd4d9dd054193d473271a45aeff868af5604..9ed7ef2ee2e1ade96fed0b2f95cab0dfd883c8d2 100644 (file)
@@ -65,7 +65,8 @@ class ModuleBotMode : public Module
        {
                
                bm = new BotMode(ServerInstance);
-               ServerInstance->AddMode(bm, 'B');
+               if (!ServerInstance->AddMode(bm, 'B'))
+                       throw ModuleException("Could not add new modes!");
        }
 
        void Implements(char* List)
index 49c04a9465cc3679284026c9efd2dde02fa144ea..4df2db95e4ec38e2c6d8e43720f28e8198126bcc 100644 (file)
@@ -99,8 +99,8 @@ class ModuleCensor : public Module
                OnRehash("");
                cu = new CensorUser(ServerInstance);
                cc = new CensorChannel(ServerInstance);
-               ServerInstance->AddMode(cu, 'G');
-               ServerInstance->AddMode(cc, 'G');
+               if (!ServerInstance->AddMode(cu, 'G') || !ServerInstance->AddMode(cc, 'G'))
+                       throw ModuleException("Could not add new modes!");
        }
 
        void Implements(char* List)
index c4a69cc10dfd4e5f90ee4dbd09737b3f84c43911..de1f38a88e1f56fbab73b727f49abe1a28cef2c1 100644 (file)
@@ -70,7 +70,8 @@ class ModuleChanFilter : public Module
                : Module::Module(Me)
        {
                cf = new ChanFilter(ServerInstance);
-               ServerInstance->AddMode(cf, 'g');
+               if (!ServerInstance->AddMode(cf, 'g'))
+                       throw ModuleException("Could not add new modes!");
        }
 
        void Implements(char* List) 
index 9f5a4eba347c8b253805658aaa06f3390ea7a5c6..cab686372310b67529a7c9fe38624d6e709e96ec 100644 (file)
@@ -298,8 +298,8 @@ class ModuleChanProtect : public Module
                cp = new ChanProtect(ServerInstance,QAPrefixes,DeprivSelf);
                cf = new ChanFounder(ServerInstance,QAPrefixes,DeprivSelf);
 
-               ServerInstance->AddMode(cp, 'a');
-               ServerInstance->AddMode(cf, 'q');
+               if (!ServerInstance->AddMode(cp, 'a') || !ServerInstance->AddMode(cf, 'q'))
+                       throw ModuleException("Could not add new modes!");
        }
 
        void Implements(char* List)
@@ -348,6 +348,7 @@ class ModuleChanProtect : public Module
                        DELETE(cf);
                        cp = new ChanProtect(ServerInstance,QAPrefixes,DeprivSelf);
                        cf = new ChanFounder(ServerInstance,QAPrefixes,DeprivSelf);
+                       /* These wont fail, we already owned the mode characters before */
                        ServerInstance->AddMode(cp, 'a');
                        ServerInstance->AddMode(cf, 'q');
                        ServerInstance->WriteOpers("*** WARNING: +qa prefixes were enabled or disabled via a REHASH. Clients will probably need to reconnect to pick up this change.");
index 850a0e5f936f5f318644a9699d48be2af7966a50..17e8c34056f7bbbdf64b600f99015e39062b7ece 100644 (file)
@@ -238,7 +238,8 @@ class ModuleCloaking : public Module
                cu = new CloakUser(ServerInstance, this, HashModule);
 
                /* Register it with the core */         
-               ServerInstance->AddMode(cu, 'x');
+               if (!ServerInstance->AddMode(cu, 'x'))
+                       throw ModuleException("Could not add new modes!");
 
                OnRehash("");
        }
index 9479b6b1c5984880427bb57d106ad758ec3b182d..2a1449bb4ed08d18d5643086c05e2ec36b7ceba2 100644 (file)
@@ -55,7 +55,8 @@ class ModuleDeaf : public Module
                : Module::Module(Me)
        {
                m1 = new User_d(ServerInstance);
-               ServerInstance->AddMode(m1, 'd');
+               if (!ServerInstance->AddMode(m1, 'd'))
+                       throw ModuleException("Could not add new modes!");
        }
 
        void Implements(char* List)
index f501676c3070a55dc2c70d17446dc06334bb0c95..510e4e899f793a55a5a8f994226f2441b7ad9c3b 100644 (file)
@@ -118,7 +118,8 @@ class ModuleHelpop : public Module
                {
                        ReadConfig();
                        ho = new Helpop(ServerInstance);
-                       ServerInstance->AddMode(ho, 'h');
+                       if (!ServerInstance->AddMode(ho, 'h'))
+                               throw ModuleException("Could not add new modes!");
                        mycommand = new cmd_helpop(ServerInstance);
                        ServerInstance->AddCommand(mycommand);
                }
index 2545db187f87879b6a9c8428501f99ac53ae0d78..9e39e2a73ad53cef708c6cc3a38e87b797131a09 100644 (file)
@@ -62,7 +62,8 @@ class ModuleHideChans : public Module
        {
                
                hm = new HideChans(ServerInstance);
-               ServerInstance->AddMode(hm, 'I');
+               if (!ServerInstance->AddMode(hm, 'I'))
+                       throw ModuleException("Could not add new modes!");
        }
 
        void Implements(char* List)
index b2eee3b5713aa98c185eaa387c8b2bf562a6d12e..43bfef445aac6a28a20738c1f45d409d80e86e90 100644 (file)
@@ -62,7 +62,8 @@ class ModuleHideOper : public Module
        {
                
                hm = new HideOper(ServerInstance);
-               ServerInstance->AddMode(hm, 'H');
+               if (!ServerInstance->AddMode(hm, 'H'))
+                       throw ModuleException("Could not add new modes!");
        }
 
        void Implements(char* List)
index 26042933d3cd024cded6732e31172c50f97e5977..0f3581e9ed42408888f65f1667d415640f0697f4 100644 (file)
@@ -49,7 +49,8 @@ public:
        ModuleInviteException(InspIRCd* Me) : Module(Me)
        {
                ie = new InviteException(ServerInstance);
-               ServerInstance->AddMode(ie, 'I');
+               if (!ServerInstance->AddMode(ie, 'I'))
+                       throw ModuleException("Could not add new modes!");
        }
        
        virtual void Implements(char* List)
index 9ed3b13077fede6ff94801ab846b133619c6f6f6..1410c7d98982e728f3ff53f6632d183ccac4de8f 100644 (file)
@@ -223,7 +223,8 @@ class ModuleJoinFlood : public Module
        {
                
                jf = new JoinFlood(ServerInstance);
-               ServerInstance->AddMode(jf, 'j');
+               if (!ServerInstance->AddMode(jf, 'j'))
+                       throw ModuleException("Could not add new modes!");
        }
        
        virtual int OnUserPreJoin(userrec* user, chanrec* chan, const char* cname, std::string &privs)
index 19cbc638fcaa3b76dc2cc022f67f2d99935988f9..68f3e53b4622de5f1c3cb8104e0c2e0538447a5e 100644 (file)
@@ -135,7 +135,8 @@ public:
        {
                
                kr = new KickRejoin(ServerInstance);
-               ServerInstance->AddMode(kr, 'J');
+               if (!ServerInstance->AddMode(kr, 'J'))
+                       throw ModuleException("Could not add new modes!");
        }
 
        virtual int OnUserPreJoin(userrec* user, chanrec* chan, const char* cname, std::string &privs)
index 5018899d208533773711db7e1e01a268872164bd..d850ed35bf0da16a70468b71eddb5ba82ea81d87 100644 (file)
@@ -111,7 +111,8 @@ class ModuleKnock : public Module
        {
                
                kn = new Knock(ServerInstance);
-               ServerInstance->AddMode(kn, 'K');
+               if (!ServerInstance->AddMode(kn, 'K'))
+                       throw ModuleException("Could not add new modes!");
                mycommand = new cmd_knock(ServerInstance);
                ServerInstance->AddCommand(mycommand);
        }
index 9a9f684e5d75046e5892d061a396cadca647a5b0..bf071e18dd17c4e194627fd3234026e88823f836 100644 (file)
@@ -200,7 +200,8 @@ class ModuleMsgFlood : public Module
        {
                
                mf = new MsgFlood(ServerInstance);
-               ServerInstance->AddMode(mf, 'f');
+               if (!ServerInstance->AddMode(mf, 'f'))
+                       throw ModuleException("Could not add new modes!");
        }
        
        void ProcessMessages(userrec* user,chanrec* dest, const std::string &text)
index 0e9120407d137303e0881aa8443c86427e1c1bd6..622a08ac68463bc69de13ed8a6c1eaf6dcd5b21e 100644 (file)
@@ -60,7 +60,8 @@ class ModuleNoCTCP : public Module
        {
                
                nc = new NoCTCP(ServerInstance);
-               ServerInstance->AddMode(nc, 'C');
+               if (!ServerInstance->AddMode(nc, 'C'))
+                       throw ModuleException("Could not add new modes!");
        }
 
        void Implements(char* List)
index 64b4ecc5f30259a25db182d95876bc7606f60a78..0b4e1723b552f1f44b7db9eecbb4735449377906 100644 (file)
@@ -54,7 +54,8 @@ class ModuleNoInvite : public Module
        ModuleNoInvite(InspIRCd* Me) : Module::Module(Me)
        {
                ni = new NoInvite(ServerInstance);
-               ServerInstance->AddMode(ni, 'V');
+               if (!ServerInstance->AddMode(ni, 'V'))
+                       throw ModuleException("Could not add new modes!");
        }
 
        void Implements(char* List)
index 9f8e804f0e027dacf2f71457b8645300cb9ee3bb..c5ad179e8a64fdcd21d19b05c1c043d2144c78e3 100644 (file)
@@ -61,7 +61,8 @@ class ModuleNoKicks : public Module
        {
                
                nk = new NoKicks(ServerInstance);
-               ServerInstance->AddMode(nk, 'Q');
+               if (!ServerInstance->AddMode(nk, 'Q'))
+                       throw ModuleException("Could not add new modes!");
        }
 
        void Implements(char* List)
index 5ec063e7127aa4d585e62066f1503c6f4161ba3e..71e7e570b4cec73d4e09cd1c808a72bb9c27a1d3 100644 (file)
@@ -57,7 +57,8 @@ class ModuleNoNotice : public Module
        {
                
                nt = new NoNotice(ServerInstance);
-               ServerInstance->AddMode(nt, 'T');
+               if (!ServerInstance->AddMode(nt, 'T'))
+                       throw ModuleException("Could not add new modes!");
        }
 
        void Implements(char* List)
index 69876cfcf9b8a405592e9514a01d63021f4b564a..6852bc6085dff4266aab59ec5f847709cfd40e5f 100644 (file)
@@ -57,7 +57,8 @@ class ModuleOperChans : public Module
        {
                                
                oc = new OperChans(ServerInstance);
-               ServerInstance->AddMode(oc, 'O');
+               if (!ServerInstance->AddMode(oc, 'O'))
+                       throw ModuleException("Could not add new modes!");
        }
 
        void Implements(char* List)
index b6600da913469da6f86c8aafe7c1da07bb698765..ae54ba1370934e17290cdbbcd7beb9127fe7746a 100644 (file)
@@ -108,7 +108,8 @@ class ModuleRedirect : public Module
        {
                
                re = new Redirect(ServerInstance);
-               ServerInstance->AddMode(re, 'L');
+               if (!ServerInstance->AddMode(re, 'L'))
+                       throw ModuleException("Could not add new modes!");
        }
        
        void Implements(char* List)
index bd656b042cbcb9e7ce120f85127b017b2d96f795..1eb089d0c7bf22e3c6b714ab143149aa97ffd4dc 100644 (file)
@@ -185,11 +185,13 @@ class ModuleServices : public Module
                m3 = new Channel_M(ServerInstance);
                m4 = new User_r(ServerInstance);
                m5 = new User_R(ServerInstance);
-               ServerInstance->AddMode(m1, 'r');
-               ServerInstance->AddMode(m2, 'R');
-               ServerInstance->AddMode(m3, 'M');
-               ServerInstance->AddMode(m4, 'r');
-               ServerInstance->AddMode(m5, 'R');
+
+               if (!ServerInstance->AddMode(m1, 'r') || !ServerInstance->AddMode(m2, 'R') || !ServerInstance->AddMode(m3, 'M')
+                       || !ServerInstance->AddMode(m4, 'r') || !ServerInstance->AddMode(m5, 'R'))
+               {
+                       throw ModuleException("Could not add user and channel modes!");
+               }
+       
                kludgeme = false;
        }
 
index 47845054c6f4842ed270cc6195950573c8d6e2b7..b5024e4df1dfa2680ee38bc3811a4e0325fd7127 100644 (file)
@@ -122,9 +122,8 @@ class ModuleServicesAccount : public Module
                m1 = new AChannel_R(ServerInstance);
                m2 = new AChannel_M(ServerInstance);
                m3 = new AUser_R(ServerInstance);
-               ServerInstance->AddMode(m1, 'R');
-               ServerInstance->AddMode(m2, 'M');
-               ServerInstance->AddMode(m3, 'R');
+               if (!ServerInstance->AddMode(m1, 'R') || !ServerInstance->AddMode(m2, 'M') || !ServerInstance->AddMode(m3, 'R'))
+                       throw ModuleException("Could not add new modes!");
        }
 
        /* <- :twisted.oscnet.org 330 w00t2 w00t2 w00t :is logged in as */
index c4fea4e392b3baa31bf1eba460924317e43f40ba..7dcfebdf627c0dadea88ecc34bf8c81d6ab56ce9 100644 (file)
@@ -63,7 +63,8 @@ class ModuleShowwhois : public Module
        {
                
                sw = new SeeWhois(ServerInstance);
-               ServerInstance->AddMode(sw, 'W');
+               if (!ServerInstance->AddMode(sw, 'W'))
+                       throw ModuleException("Could not add new modes!");
        }
 
        ~ModuleShowwhois()
index 9288f6306a673cd40d26d6d959c4f2fecc479949..1143473c3c7b4cb37d4ba875859569769198aa2f 100644 (file)
@@ -78,7 +78,8 @@ class ModuleSSLModes : public Module
                
 
                sslm = new SSLMode(ServerInstance);
-               ServerInstance->AddMode(sslm, 'z');
+               if (!ServerInstance->AddMode(sslm, 'z'))
+                       throw ModuleException("Could not add new modes!");
        }
 
        void Implements(char* List)
index 97e367bb9f8e486373f5a55a7eb8c9be28c7d3d3..3639eae148f5008a993fb11956aaf917e547bebe 100644 (file)
@@ -99,8 +99,8 @@ class ModuleStripColor : public Module
                usc = new UserStripColor(ServerInstance);
                csc = new ChannelStripColor(ServerInstance);
 
-               ServerInstance->AddMode(usc, 'S');
-               ServerInstance->AddMode(csc, 'S');
+               if (!ServerInstance->AddMode(usc, 'S') || !ServerInstance->AddMode(csc, 'S'))
+                       throw ModuleException("Could not add new modes!");
        }
 
        void Implements(char* List)