]> arthur.barton.de Git - ngircd-alex.git/blobdiff - src/ngircd/irc-info.c
WHOIS command: make sure matching is case-insensitive
[ngircd-alex.git] / src / ngircd / irc-info.c
index c2f4910e47645807251c82e9815e61ccdbc08279..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++)
        {
@@ -1185,7 +1186,7 @@ IRC_WHOIS( CLIENT *Client, REQUEST *Req )
                 */
                if (!has_wildcards || is_remote) {
                        c = Client_Search(query);
-                       if (c) {
+                       if (c && Client_Type(c) == CLIENT_USER) {
                                if (!IRC_WHOIS_SendReply(Client, from, c))
                                        return DISCONNECTED;
                        } else {