Add more penalty times
authorFederico G. Schwindt <fgsch@lodoss.net>
Thu, 5 Sep 2013 16:11:38 +0000 (17:11 +0100)
committerFederico G. Schwindt <fgsch@lodoss.net>
Fri, 6 Sep 2013 22:02:01 +0000 (23:02 +0100)
Ensure before every numeric 461 there is a call to IRC_SetPenalty().

src/ngircd/irc-channel.c
src/ngircd/irc-info.c
src/ngircd/irc-login.c
src/ngircd/irc-mode.c
src/ngircd/irc-op.c
src/ngircd/irc-oper.c
src/ngircd/irc-server.c
src/ngircd/irc.c

index ce042043ebe0b3eedc087635e50fc30a6b51610c..d5e7bdd1b474a1882c0cca04048a624c17032ac3 100644 (file)
@@ -323,9 +323,11 @@ IRC_JOIN( CLIENT *Client, REQUEST *Req )
        channame = strtok_r(channame, ",", &lastchan);
 
        /* Make sure that "channame" is not the empty string ("JOIN :") */
-       if (! channame)
+       if (!channame) {
+               IRC_SetPenalty(Client, 2);
                return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG,
                                          Client_ID(Client), Req->command);
+       }
 
        while (channame) {
                flags = NULL;
@@ -445,9 +447,11 @@ IRC_PART(CLIENT * Client, REQUEST * Req)
        chan = strtok(Req->argv[0], ",");
 
        /* Make sure that "chan" is not the empty string ("PART :") */
-       if (! chan)
+       if (!chan) {
+               IRC_SetPenalty(Client, 2);
                return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG,
                                          Client_ID(Client), Req->command);
+       }
 
        while (chan) {
                Channel_Part(target, Client, chan,
@@ -662,9 +666,11 @@ IRC_CHANINFO( CLIENT *Client, REQUEST *Req )
        assert( Req != NULL );
 
        /* Bad number of parameters? */
-       if (Req->argc < 2 || Req->argc == 4 || Req->argc > 5)
+       if (Req->argc < 2 || Req->argc == 4 || Req->argc > 5) {
+               IRC_SetPenalty(Client, 2);
                return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG,
                                          Client_ID(Client), Req->command);
+       }
 
        /* Compatibility kludge */
        if (Req->argc == 5)
index 88455c74d9e85c770442aea1aa6f0c54e2e0ab9c..1c250a442bc8143dab65692fba4a4f26ce913d8c 100644 (file)
@@ -1146,11 +1146,13 @@ IRC_WHO(CLIENT *Client, REQUEST *Req)
                if (strcmp(Req->argv[1], "o") == 0)
                        only_ops = true;
 #ifdef STRICT_RFC
-               else
+               else {
+                       IRC_SetPenalty(Client, 2);
                        return IRC_WriteErrClient(Client,
                                                  ERR_NEEDMOREPARAMS_MSG,
                                                  Client_ID(Client),
                                                  Req->command);
+               }
 #endif
        }
 
index 67a0fbfd803603befe536bc7e61e94eb06ced5a0..013481d2275029b664019126a6926d3e978dc222 100644 (file)
@@ -81,6 +81,7 @@ IRC_PASS( CLIENT *Client, REQUEST *Req )
        } else if (Client_Type(Client) == CLIENT_UNKNOWN ||
                   Client_Type(Client) == CLIENT_UNKNOWNSERVER) {
                /* Unregistered connection, but wrong number of arguments: */
+               IRC_SetPenalty(Client, 2);
                return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG,
                                          Client_ID(Client), Req->command);
        } else {
@@ -270,9 +271,11 @@ IRC_NICK( CLIENT *Client, REQUEST *Req )
                /* Server or service introduces new client */
 
                /* Bad number of parameters? */
-               if (Req->argc != 2 && Req->argc != 7)
+               if (Req->argc != 2 && Req->argc != 7) {
+                       IRC_SetPenalty(Client, 2);
                        return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG,
                                                  Client_ID(Client), Req->command);
+               }
 
                if (Req->argc >= 7) {
                        /* RFC 2813 compatible syntax */
index 38fec0d028b5761bcf2bd432a2633cae9871f7fc..e2fa59a2df67aa5f306629e0b3db9030a26d7c1d 100644 (file)
@@ -622,6 +622,7 @@ Channel_Mode(CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel)
 #ifdef STRICT_RFC
                                /* Only send error message in "strict" mode,
                                 * this is how ircd2.11 and others behave ... */
+                               IRC_SetPenalty(Origin, 2);
                                connected = IRC_WriteErrClient(Origin,
                                        ERR_NEEDMOREPARAMS_MSG,
                                        Client_ID(Origin), Req->command);
@@ -666,6 +667,7 @@ Channel_Mode(CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel)
 #ifdef STRICT_RFC
                                /* Only send error message in "strict" mode,
                                 * this is how ircd2.11 and others behave ... */
+                               IRC_SetPenalty(Origin, 2);
                                connected = IRC_WriteErrClient(Origin,
                                        ERR_NEEDMOREPARAMS_MSG,
                                        Client_ID(Origin), Req->command);
@@ -767,6 +769,7 @@ Channel_Mode(CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel)
                                 * mode, because most other servers don't do
                                 * it as well and some clients send "wired"
                                 * MODE commands like "MODE #chan -ooo nick". */
+                               IRC_SetPenalty(Origin, 2);
                                connected = IRC_WriteErrClient(Origin,
                                        ERR_NEEDMOREPARAMS_MSG,
                                        Client_ID(Origin), Req->command);
index 23db579e725e1e54ef01faf4bfdd10616843ac76..52126877dc1a6f27bc804b3a968499251d36e980 100644 (file)
@@ -122,6 +122,7 @@ IRC_KICK(CLIENT *Client, REQUEST *Req)
                        nickCount--;
                }
        } else {
+               IRC_SetPenalty(Client, 2);
                return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG,
                                        Client_ID(Client), Req->command);
        }
index 40633177a51babbe3d8971453f9b62818bec8a50..4d17085f4ac3ce7a264bfa900e940d17512f5c5c 100644 (file)
@@ -208,14 +208,18 @@ IRC_CONNECT(CLIENT * Client, REQUEST * Req)
 
        /* Bad number of parameters? */
        if (Req->argc != 1 && Req->argc != 2 && Req->argc != 3 &&
-           Req->argc != 5 && Req->argc != 6)
+           Req->argc != 5 && Req->argc != 6) {
+               IRC_SetPenalty(Client, 2);
                return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG,
                                          Client_ID(Client), Req->command);
+       }
 
        /* Invalid port number? */
-       if ((Req->argc > 1) && atoi(Req->argv[1]) < 1)
+       if ((Req->argc > 1) && atoi(Req->argv[1]) < 1) {
+               IRC_SetPenalty(Client, 2);
                return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG,
                                          Client_ID(Client), Req->command);
+       }
 
        if (Client_Type(Client) != CLIENT_SERVER
            && !Client_HasMode(Client, 'o'))
@@ -391,9 +395,11 @@ IRC_xLINE(CLIENT *Client, REQUEST *Req)
        assert(Req != NULL);
 
        /* Bad number of parameters? */
-       if (Req->argc != 1 && Req->argc != 3)
+       if (Req->argc != 1 && Req->argc != 3) {
+               IRC_SetPenalty(Client, 2);
                return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG,
                                          Client_ID(Client), Req->command);
+       }
 
        from = Op_Check(Client, Req);
        if (!from)
index 80bb6a6141169fe0b03b18063496a2b9d0494800..030c3cd1fc043c00f3c99633eb1e33620b2be838 100644 (file)
@@ -72,10 +72,12 @@ IRC_SERVER( CLIENT *Client, REQUEST *Req )
                LogDebug("Connection %d: got SERVER command (new server link) ...",
                        Client_Conn(Client));
 
-               if (Req->argc != 2 && Req->argc != 3)
+               if (Req->argc != 2 && Req->argc != 3) {
+                       IRC_SetPenalty(Client, 2);
                        return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG,
                                                  Client_ID(Client),
                                                  Req->command);
+               }
 
                /* Get configuration index of new remote server ... */
                for (i = 0; i < MAX_SERVERS; i++)
@@ -183,9 +185,11 @@ IRC_SERVER( CLIENT *Client, REQUEST *Req )
        {
                /* New server is being introduced to the network */
 
-               if (Req->argc != 4)
+               if (Req->argc != 4) {
+                       IRC_SetPenalty(Client, 2);
                        return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG,
                                                  Client_ID(Client), Req->command);
+               }
 
                /* check for existing server with same ID */
                if (!Client_CheckID(Client, Req->argv[0]))
@@ -231,9 +235,11 @@ IRC_SERVER( CLIENT *Client, REQUEST *Req )
                                          Client_MyToken(c), Client_Info(c));
 
                return CONNECTED;
-       } else
+       } else {
+               IRC_SetPenalty(Client, 2);
                return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG,
                                          Client_ID(Client), Req->command);
+       }
 } /* IRC_SERVER */
 
 /*
index 7dafaf0539b005bdf808dcefb870838dfae8dfcc..d41439edaa61dbc941fcd12b05c2c29000831536 100644 (file)
@@ -510,6 +510,7 @@ Send_Message(CLIENT * Client, REQUEST * Req, int ForceType, bool SendErrors)
        if (Req->argc > 2) {
                if (!SendErrors)
                        return CONNECTED;
+               IRC_SetPenalty(Client, 2);
                return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG,
                                          Client_ID(Client), Req->command);
        }