mirror of
				https://github.com/osmarks/ngircd.git
				synced 2025-10-31 22:13:00 +00:00 
			
		
		
		
	Add more penalty times
Ensure before every numeric 461 there is a call to IRC_SetPenalty().
This commit is contained in:
		| @@ -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) | ||||
|   | ||||
| @@ -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 | ||||
| 	} | ||||
|  | ||||
|   | ||||
| @@ -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 */ | ||||
|   | ||||
| @@ -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); | ||||
|   | ||||
| @@ -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); | ||||
| 	} | ||||
|   | ||||
| @@ -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) | ||||
|   | ||||
| @@ -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 */ | ||||
|  | ||||
| /* | ||||
|   | ||||
| @@ -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); | ||||
| 	} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Federico G. Schwindt
					Federico G. Schwindt