diff options
| author | Alexander Barton <alex@barton.de> | 2012-01-05 00:51:39 +0100 |
|---|---|---|
| committer | Alexander Barton <alex@barton.de> | 2012-01-05 00:51:39 +0100 |
| commit | 9fbf592924d4ed1e37b42f295ec9c9ab0fc3cd08 (patch) | |
| tree | 4de08ed0ac10d6e55723d4c4709a085a4d4b3cff /src | |
| parent | adf92302bf9bb6420acd1f1153515586794b1574 (diff) | |
| download | ngircd-9fbf592924d4ed1e37b42f295ec9c9ab0fc3cd08.tar.gz ngircd-9fbf592924d4ed1e37b42f295ec9c9ab0fc3cd08.zip | |
WHOIS command: make sure matching is case-insensitive
And make sure that RPL_ENDOFWHOIS replies with the unmodified mask like it has been received from the client.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ngircd/irc-info.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/ngircd/irc-info.c b/src/ngircd/irc-info.c index 883893fc..42b22643 100644 --- a/src/ngircd/irc-info.c +++ b/src/ngircd/irc-info.c @@ -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++) { |