From 29e3e409a36256cd1bf49c58970ebbeff8151497 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Fri, 8 Mar 2013 11:28:15 +0100 Subject: fix another segfault user or data might be null --- sircbot.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'sircbot.c') diff --git a/sircbot.c b/sircbot.c index 7d9c1a3..bb965ad 100644 --- a/sircbot.c +++ b/sircbot.c @@ -236,21 +236,21 @@ int handle_response(struct sircbot_session *sb, char *user, char *cmd, char *data) { printf("DEBUG: handling response: user=%s, cmd=%s, data=%s\n", - user, cmd, data); + user ? user : "(null)", cmd, data ? data : "(null)"); if (strncmp(cmd, "PING", 4) == 0) { return irc_send(sb->sess, "PONG", data); } else if (strncmp(cmd, "PONG", 4) == 0) { sb->sess->last_pong = time(NULL); - } else if (strncmp(cmd, "JOIN", 4) == 0 && + } else if (strncmp(cmd, "JOIN", 4) == 0 && user != NULL && strncmp(user, sb->sess->nick, strlen(sb->sess->nick)) == 0) { return join_channel(sb, data); - } else if (strncmp(cmd, "KICK", 4) == 0) { + } else if (strncmp(cmd, "KICK", 4) == 0 && data != NULL) { char *p = strchr(data, ' '); if (p) *p = '\0'; return kick_channel(sb, data); - } else if (strncmp(cmd, "PRIVMSG", 7) == 0) { + } else if (strncmp(cmd, "PRIVMSG", 7) == 0 && data != NULL) { char *p = strchr(data, ' '); if (p) { *p++ = '\0'; @@ -266,6 +266,8 @@ int parse_line(struct sircbot_session *sb, char *line) { char *user = NULL, *p, *cmd, *data = NULL; + if (line == NULL) + return -1; if (line[0] == ':') { user = &line[1]; p = strchr(user, ' '); -- cgit v1.2.3