Commit Diff


commit - 1189200d4a1df4cf338c7d5979c2a54fc7edfc8d
commit + 51d7674ee7b17553a7481b7a154145300797d6e3
blob - 0f151ac8685469f83a8807682a72ddfd32a7ac9b
blob + 16c551f97a89b422bf356465f45b0cc85a522e11
--- src/ngircd/client.c
+++ src/ngircd/client.c
@@ -864,8 +864,13 @@ Client_CheckNick(CLIENT *Client, char *Nick)
 	assert(Nick != NULL);
 
 	if (!Client_IsValidNick(Nick)) {
-		IRC_WriteStrClient(Client, ERR_ERRONEUSNICKNAME_MSG,
-				   Client_ID(Client), Nick);
+		if (strlen(Nick ) >= Conf_MaxNickLength)
+			IRC_WriteStrClient(Client, ERR_NICKNAMETOOLONG_MSG,
+					   Client_ID(Client), Nick,
+					   Conf_MaxNickLength - 1);
+		else
+			IRC_WriteStrClient(Client, ERR_ERRONEUSNICKNAME_MSG,
+					   Client_ID(Client), Nick);
 		return false;
 	}
 
blob - 93bef3d78eb0ba033722136ce842a2518a077f5c
blob + 12791d23d3a4ed319e34910d27bc3a25cf333524
--- src/ngircd/messages.h
+++ src/ngircd/messages.h
@@ -105,6 +105,7 @@
 #define ERR_NOMOTD_MSG			"422 %s :MOTD file is missing"
 #define ERR_NONICKNAMEGIVEN_MSG		"431 %s :No nickname given"
 #define ERR_ERRONEUSNICKNAME_MSG	"432 %s %s :Erroneous nickname"
+#define ERR_NICKNAMETOOLONG_MSG		"432 %s %s :Nickname too long, max. %u characters"
 #define ERR_NICKNAMEINUSE_MSG		"433 %s %s :Nickname already in use"
 #define ERR_USERNOTINCHANNEL_MSG	"441 %s %s %s :They aren't on that channel"
 #define ERR_NOTONCHANNEL_MSG		"442 %s %s :You are not on that channel"