Commit Diff


commit - 055d6e80561cc56fd2218c7698b3063931c8c17e
commit + 7dba1a0766b35d01cd8892753d1e0dd578ca2cd9
blob - 15bb90f73ced63e4d7134d5f49b56fb893debd2a
blob + 5325b52aedaa7ef3cd470f9ef09a7a9c3bb2a2d7
--- src/ngircd/irc.c
+++ src/ngircd/irc.c
@@ -563,7 +563,9 @@ Send_Message(CLIENT * Client, REQUEST * Req, int Force
 	currentTarget = strtok_r(currentTarget, ",", &strtok_last);
 	ngt_UpperStr(Req->command);
 
-	while (true) {
+	/* Please note that "currentTarget" is NULL when the target contains
+	 * the separator character only, e. g. "," or ",,,," etc.! */
+	while (currentTarget) {
 		/* Make sure that there hasn't been such a target already: */
 		targets[target_nr++] = currentTarget;
 		for(i = 0; i < target_nr - 1; i++) {
blob - e46378637b8c2ff44df43a85d13911484809eeec
blob + 9eb22e77896fd0bd6241059147c3093861d1ecd0
--- src/testsuite/message-test.e
+++ src/testsuite/message-test.e
@@ -38,6 +38,17 @@ expect {
 	"@* PRIVMSG nick :test"
 }
 
+send "privmsg ,,,, :dummy\r"
+send "privmsg ,,,nick,,&server,,, :test\r"
+expect {
+	timeout { exit 1 }
+	"@* PRIVMSG nick :test"
+}
+expect {
+	timeout { exit 1 }
+	"404"
+}
+
 send "privmsg Nick,#testChannel,nick :test\r"
 expect {
 	timeout { exit 1 }