1
0
mirror of https://github.com/osmarks/ngircd.git synced 2024-10-28 04:46:17 +00:00

Add more penalty times

Ensure before every numeric 461 there is a call to IRC_SetPenalty().
This commit is contained in:
Federico G. Schwindt 2013-09-05 17:11:38 +01:00
parent 08f9d31d60
commit bcb45da1b4
8 changed files with 39 additions and 11 deletions

View File

@ -323,9 +323,11 @@ IRC_JOIN( CLIENT *Client, REQUEST *Req )
channame = strtok_r(channame, ",", &lastchan); channame = strtok_r(channame, ",", &lastchan);
/* Make sure that "channame" is not the empty string ("JOIN :") */ /* 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, return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG,
Client_ID(Client), Req->command); Client_ID(Client), Req->command);
}
while (channame) { while (channame) {
flags = NULL; flags = NULL;
@ -445,9 +447,11 @@ IRC_PART(CLIENT * Client, REQUEST * Req)
chan = strtok(Req->argv[0], ","); chan = strtok(Req->argv[0], ",");
/* Make sure that "chan" is not the empty string ("PART :") */ /* 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, return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG,
Client_ID(Client), Req->command); Client_ID(Client), Req->command);
}
while (chan) { while (chan) {
Channel_Part(target, Client, chan, Channel_Part(target, Client, chan,
@ -662,9 +666,11 @@ IRC_CHANINFO( CLIENT *Client, REQUEST *Req )
assert( Req != NULL ); assert( Req != NULL );
/* Bad number of parameters? */ /* 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, return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG,
Client_ID(Client), Req->command); Client_ID(Client), Req->command);
}
/* Compatibility kludge */ /* Compatibility kludge */
if (Req->argc == 5) if (Req->argc == 5)

View File

@ -1146,11 +1146,13 @@ IRC_WHO(CLIENT *Client, REQUEST *Req)
if (strcmp(Req->argv[1], "o") == 0) if (strcmp(Req->argv[1], "o") == 0)
only_ops = true; only_ops = true;
#ifdef STRICT_RFC #ifdef STRICT_RFC
else else {
IRC_SetPenalty(Client, 2);
return IRC_WriteErrClient(Client, return IRC_WriteErrClient(Client,
ERR_NEEDMOREPARAMS_MSG, ERR_NEEDMOREPARAMS_MSG,
Client_ID(Client), Client_ID(Client),
Req->command); Req->command);
}
#endif #endif
} }

View File

@ -81,6 +81,7 @@ IRC_PASS( CLIENT *Client, REQUEST *Req )
} else if (Client_Type(Client) == CLIENT_UNKNOWN || } else if (Client_Type(Client) == CLIENT_UNKNOWN ||
Client_Type(Client) == CLIENT_UNKNOWNSERVER) { Client_Type(Client) == CLIENT_UNKNOWNSERVER) {
/* Unregistered connection, but wrong number of arguments: */ /* Unregistered connection, but wrong number of arguments: */
IRC_SetPenalty(Client, 2);
return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG, return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG,
Client_ID(Client), Req->command); Client_ID(Client), Req->command);
} else { } else {
@ -270,9 +271,11 @@ IRC_NICK( CLIENT *Client, REQUEST *Req )
/* Server or service introduces new client */ /* Server or service introduces new client */
/* Bad number of parameters? */ /* 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, return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG,
Client_ID(Client), Req->command); Client_ID(Client), Req->command);
}
if (Req->argc >= 7) { if (Req->argc >= 7) {
/* RFC 2813 compatible syntax */ /* RFC 2813 compatible syntax */

View File

@ -622,6 +622,7 @@ Channel_Mode(CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel)
#ifdef STRICT_RFC #ifdef STRICT_RFC
/* Only send error message in "strict" mode, /* Only send error message in "strict" mode,
* this is how ircd2.11 and others behave ... */ * this is how ircd2.11 and others behave ... */
IRC_SetPenalty(Origin, 2);
connected = IRC_WriteErrClient(Origin, connected = IRC_WriteErrClient(Origin,
ERR_NEEDMOREPARAMS_MSG, ERR_NEEDMOREPARAMS_MSG,
Client_ID(Origin), Req->command); Client_ID(Origin), Req->command);
@ -666,6 +667,7 @@ Channel_Mode(CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel)
#ifdef STRICT_RFC #ifdef STRICT_RFC
/* Only send error message in "strict" mode, /* Only send error message in "strict" mode,
* this is how ircd2.11 and others behave ... */ * this is how ircd2.11 and others behave ... */
IRC_SetPenalty(Origin, 2);
connected = IRC_WriteErrClient(Origin, connected = IRC_WriteErrClient(Origin,
ERR_NEEDMOREPARAMS_MSG, ERR_NEEDMOREPARAMS_MSG,
Client_ID(Origin), Req->command); 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 * mode, because most other servers don't do
* it as well and some clients send "wired" * it as well and some clients send "wired"
* MODE commands like "MODE #chan -ooo nick". */ * MODE commands like "MODE #chan -ooo nick". */
IRC_SetPenalty(Origin, 2);
connected = IRC_WriteErrClient(Origin, connected = IRC_WriteErrClient(Origin,
ERR_NEEDMOREPARAMS_MSG, ERR_NEEDMOREPARAMS_MSG,
Client_ID(Origin), Req->command); Client_ID(Origin), Req->command);

View File

@ -122,6 +122,7 @@ IRC_KICK(CLIENT *Client, REQUEST *Req)
nickCount--; nickCount--;
} }
} else { } else {
IRC_SetPenalty(Client, 2);
return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG, return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG,
Client_ID(Client), Req->command); Client_ID(Client), Req->command);
} }

View File

@ -208,14 +208,18 @@ IRC_CONNECT(CLIENT * Client, REQUEST * Req)
/* Bad number of parameters? */ /* Bad number of parameters? */
if (Req->argc != 1 && Req->argc != 2 && Req->argc != 3 && 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, return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG,
Client_ID(Client), Req->command); Client_ID(Client), Req->command);
}
/* Invalid port number? */ /* 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, return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG,
Client_ID(Client), Req->command); Client_ID(Client), Req->command);
}
if (Client_Type(Client) != CLIENT_SERVER if (Client_Type(Client) != CLIENT_SERVER
&& !Client_HasMode(Client, 'o')) && !Client_HasMode(Client, 'o'))
@ -391,9 +395,11 @@ IRC_xLINE(CLIENT *Client, REQUEST *Req)
assert(Req != NULL); assert(Req != NULL);
/* Bad number of parameters? */ /* 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, return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG,
Client_ID(Client), Req->command); Client_ID(Client), Req->command);
}
from = Op_Check(Client, Req); from = Op_Check(Client, Req);
if (!from) if (!from)

View File

@ -72,10 +72,12 @@ IRC_SERVER( CLIENT *Client, REQUEST *Req )
LogDebug("Connection %d: got SERVER command (new server link) ...", LogDebug("Connection %d: got SERVER command (new server link) ...",
Client_Conn(Client)); 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, return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG,
Client_ID(Client), Client_ID(Client),
Req->command); Req->command);
}
/* Get configuration index of new remote server ... */ /* Get configuration index of new remote server ... */
for (i = 0; i < MAX_SERVERS; i++) 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 */ /* 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, return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG,
Client_ID(Client), Req->command); Client_ID(Client), Req->command);
}
/* check for existing server with same ID */ /* check for existing server with same ID */
if (!Client_CheckID(Client, Req->argv[0])) if (!Client_CheckID(Client, Req->argv[0]))
@ -231,9 +235,11 @@ IRC_SERVER( CLIENT *Client, REQUEST *Req )
Client_MyToken(c), Client_Info(c)); Client_MyToken(c), Client_Info(c));
return CONNECTED; return CONNECTED;
} else } else {
IRC_SetPenalty(Client, 2);
return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG, return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG,
Client_ID(Client), Req->command); Client_ID(Client), Req->command);
}
} /* IRC_SERVER */ } /* IRC_SERVER */
/* /*

View File

@ -510,6 +510,7 @@ Send_Message(CLIENT * Client, REQUEST * Req, int ForceType, bool SendErrors)
if (Req->argc > 2) { if (Req->argc > 2) {
if (!SendErrors) if (!SendErrors)
return CONNECTED; return CONNECTED;
IRC_SetPenalty(Client, 2);
return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG, return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG,
Client_ID(Client), Req->command); Client_ID(Client), Req->command);
} }