From abaed2bda49769ef74ffb9ad316f7a8969ac3465 Mon Sep 17 00:00:00 2001 From: TingPing Date: Sat, 27 Sep 2014 13:11:21 -0400 Subject: Fix parsing of MONITOR responses Fixes #1157 --- src/common/notify.c | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) (limited to 'src') diff --git a/src/common/notify.c b/src/common/notify.c index 80853ecb..bf80a1b5 100644 --- a/src/common/notify.c +++ b/src/common/notify.c @@ -293,26 +293,20 @@ notify_set_offline_list (server * serv, char *users, int quiet, struct notify_per_server *servnot; char nick[NICKLEN]; char *token, *chr; - int pos; token = strtok (users, ","); while (token != NULL) { chr = strchr (token, '!'); - if (!chr) - goto end; + if (chr != NULL) + *chr = '\0'; - pos = chr - token; - if (pos + 1 >= sizeof(nick)) - goto end; - - memset (nick, 0, sizeof(nick)); - strncpy (nick, token, pos); + g_strlcpy (nick, token, sizeof(nick)); servnot = notify_find (serv, nick); if (servnot) notify_announce_offline (serv, servnot, nick, quiet, tags_data); -end: + token = strtok (NULL, ","); } } @@ -324,26 +318,20 @@ notify_set_online_list (server * serv, char *users, struct notify_per_server *servnot; char nick[NICKLEN]; char *token, *chr; - int pos; token = strtok (users, ","); while (token != NULL) { chr = strchr (token, '!'); - if (!chr) - goto end; + if (chr != NULL) + *chr = '\0'; - pos = chr - token; - if (pos + 1 >= sizeof(nick)) - goto end; - - memset (nick, 0, sizeof(nick)); - strncpy (nick, token, pos); + g_strlcpy (nick, token, sizeof(nick)); servnot = notify_find (serv, nick); if (servnot) notify_announce_online (serv, servnot, nick, tags_data); -end: + token = strtok (NULL, ","); } } -- cgit 1.4.1