diff options
-rw-r--r-- | Changes | 1 | ||||
-rw-r--r-- | src/users.c | 16 |
2 files changed, 15 insertions, 2 deletions
@@ -18,6 +18,7 @@ Provided by illu. <illu@rs2i.net> - 2006 01/25 F Updated the french language file. [ #00] Provided by Trystan <trystan@nomadirc.net> - 2006 +02/23 F Usermatching possible null arg on sstrdup. [ #00] 02/12 F Double unbanning of in certain conditions. [ #00] 01/25 F va_copy issue for various platforms. [ #00] diff --git a/src/users.c b/src/users.c index d62fba853..c8abab7c3 100644 --- a/src/users.c +++ b/src/users.c @@ -977,10 +977,16 @@ int is_excepted_mask(ChannelInfo * ci, char *mask) int match_usermask(const char *mask, User * user) { - char *mask2 = sstrdup(mask); + char *mask2; char *nick, *username, *host; int result; + if (!mask || !*mask) { + return 0; + } + + mask2 = sstrdup(mask); + if (strchr(mask2, '!')) { nick = strtok(mask2, "!"); username = strtok(NULL, "@"); @@ -1016,10 +1022,16 @@ int match_usermask(const char *mask, User * user) int match_userip(const char *mask, User * user, char *iphost) { - char *mask2 = sstrdup(mask); + char *mask2; char *nick, *username, *host; int result; + if (!mask || !*mask) { + return 0; + } + + mask2 = sstrdup(mask); + if (strchr(mask2, '!')) { nick = strtok(mask2, "!"); username = strtok(NULL, "@"); |