]> git.armaanb.net Git - sic.git/blobdiff - sic.c
using Tcmd successors more carefully
[sic.git] / sic.c
diff --git a/sic.c b/sic.c
index 3fb0b0de27858237858d9161dbac9aa00d9c8620..668dd5cedc697ba868b51d8160f05c67fca6db42 100644 (file)
--- a/sic.c
+++ b/sic.c
@@ -142,7 +142,8 @@ parsesrv(char *msg) {
         * <crlf>     ::= CR LF
         */
        if(msg[0] == ':') { /* check prefix */
-               p = strchr(msg, ' ');
+               if (!(p = strchr(msg, ' ')))
+                       return;
                *p = 0;
                for(++p; *p == ' '; p++);
                cmd = p;
@@ -162,7 +163,7 @@ parsesrv(char *msg) {
                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]);
@@ -193,8 +194,9 @@ parsesrv(char *msg) {
        }
        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],