WHOIS command: make sure matching is case-insensitive
authorAlexander Barton <alex@barton.de>
Wed, 4 Jan 2012 23:51:39 +0000 (00:51 +0100)
committerAlexander Barton <alex@barton.de>
Wed, 4 Jan 2012 23:51:39 +0000 (00:51 +0100)
And make sure that RPL_ENDOFWHOIS replies with the unmodified mask
like it has been received from the client.

src/ngircd/irc-info.c

index 883893fc5d2c4add0d9cf61a3ebb7e86dca84824..42b22643c63405a0f4a16d43f324636a3fd9584e 100644 (file)
@@ -1129,7 +1129,7 @@ IRC_WHOIS( CLIENT *Client, REQUEST *Req )
        unsigned int match_count = 0, found = 0;
        bool has_wildcards, is_remote;
        bool got_wildcard = false;
-       const char *query;
+       char mask[COMMAND_LEN], *query;
 
        assert( Client != NULL );
        assert( Req != NULL );
@@ -1170,7 +1170,8 @@ IRC_WHOIS( CLIENT *Client, REQUEST *Req )
                                                Req->argv[0], Req->argv[1]);
 
        is_remote = Client_Conn(from) < 0;
-       for (query = strtok(Req->argv[Req->argc - 1], ",");
+       strlcpy(mask, Req->argv[Req->argc - 1], sizeof(mask));
+       for (query = strtok(ngt_LowerStr(mask), ",");
                        query && found < 3;
                        query = strtok(NULL, ","), found++)
        {