diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/ngircd/irc.c | 4 | ||||
| -rw-r--r-- | src/testsuite/message-test.e | 11 |
2 files changed, 14 insertions, 1 deletions
diff --git a/src/ngircd/irc.c b/src/ngircd/irc.c index 15bb90f7..5325b52a 100644 --- a/src/ngircd/irc.c +++ b/src/ngircd/irc.c @@ -563,7 +563,9 @@ Send_Message(CLIENT * Client, REQUEST * Req, int ForceType, bool SendErrors) 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++) { diff --git a/src/testsuite/message-test.e b/src/testsuite/message-test.e index e4637863..9eb22e77 100644 --- a/src/testsuite/message-test.e +++ b/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 } |