Improve CTCP notice handling

Cutting off all text after \001 can result in users hiding text
so lets only bother handling it if it is a valid CTCP message
(starting and ending with \001).
This commit is contained in:
Patrick Griffis 2017-10-07 17:31:53 -04:00
parent 07f1fc60da
commit 4188f26ab9
1 changed files with 8 additions and 5 deletions

View File

@ -932,7 +932,7 @@ void
inbound_notice (server *serv, char *to, char *nick, char *msg, char *ip, int id, inbound_notice (server *serv, char *to, char *nick, char *msg, char *ip, int id,
const message_tags_data *tags_data) const message_tags_data *tags_data)
{ {
char *po,*ptr=to; char *ptr = to;
session *sess = 0; session *sess = 0;
int server_notice = FALSE; int server_notice = FALSE;
@ -1005,18 +1005,21 @@ inbound_notice (server *serv, char *to, char *nick, char *msg, char *ip, int id,
} }
} }
if (msg[0] == 1) if (msg[0] == '\001')
{ {
size_t len;
msg++; msg++;
if (!strncmp (msg, "PING", 4)) if (!strncmp (msg, "PING", 4))
{ {
inbound_ping_reply (sess, msg + 5, nick, tags_data); inbound_ping_reply (sess, msg + 5, nick, tags_data);
return; return;
} }
len = strlen(msg);
if (msg[len - 1] == '\001')
msg[len - 1] = '\000';
} }
po = strchr (msg, '\001');
if (po)
po[0] = 0;
if (server_notice) if (server_notice)
EMIT_SIGNAL_TIMESTAMP (XP_TE_SERVNOTICE, sess, msg, nick, NULL, NULL, 0, EMIT_SIGNAL_TIMESTAMP (XP_TE_SERVNOTICE, sess, msg, nick, NULL, NULL, 0,