* <crlf> ::= CR LF
*/
if(msg[0] == ':') { /* check prefix */
- p = strchr(msg, ' ');
+ if (!(p = strchr(msg, ' ')))
+ return;
*p = 0;
for(++p; *p == ' '; p++);
cmd = p;
argv[Ttext] = ++p;
}
tokenize(&argv[Tcmd], Tlast - Tcmd, cmd, ' ');
- if(!strncmp("PONG", argv[Tcmd], 5))
+ if(!argv[Tcmd] || !strncmp("PONG", argv[Tcmd], 5))
return;
else if(!strncmp("PING", argv[Tcmd], 5)) {
snprintf(bufout, sizeof bufout, "PONG %s\r\n", argv[Ttext]);
}
else if(!strncmp("MODE", argv[Tcmd], 5))
snprintf(bufout, sizeof bufout, "-!- %s changed mode/%s -> %s %s",
- argv[Tnick], argv[Tcmd + 1],
- argv[Tcmd + 2], argv[Tcmd + 3]);
+ argv[Tnick], argv[Tcmd + 1] ? argv[Tcmd + 1] : "",
+ argv[Tcmd + 2] ? argv[Tcmd + 2] : "",
+ argv[Tcmd + 3] ? argv[Tcmd + 3] : "");
else if(!strncmp("QUIT", argv[Tcmd], 5))
snprintf(bufout, sizeof bufout, "-!- %s(%s) has quit \"%s\"",
argv[Tnick], argv[Tuser],