about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorAlexander Barton <alex@barton.de>2011-01-23 18:38:36 +0100
committerAlexander Barton <alex@barton.de>2011-01-23 18:38:36 +0100
commit8700f4d93cb50ebe7639e7a32e93b94c36ed3fae (patch)
tree6d6e3a4d2efc908410f89885c2c9f4f3fa19742c /src
parent765dc320f11f117d63e5285a903dfe8af4a48795 (diff)
downloadngircd-8700f4d93cb50ebe7639e7a32e93b94c36ed3fae.tar.gz
ngircd-8700f4d93cb50ebe7639e7a32e93b94c36ed3fae.zip
Better check for invalid IRC+ PASS command
Don't do a NULL-pointer dereference when a remote server using the
IRC+ protocol sends an invalid PASS command without the required
<serverversion> parameter ...
Diffstat (limited to 'src')
-rw-r--r--src/ngircd/irc-login.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/ngircd/irc-login.c b/src/ngircd/irc-login.c
index 73dd8d1f..8af4df95 100644
--- a/src/ngircd/irc-login.c
+++ b/src/ngircd/irc-login.c
@@ -143,8 +143,8 @@ IRC_PASS( CLIENT *Client, REQUEST *Req )
 		if (type && strcmp(type, PROTOIRCPLUS) == 0) {
 			/* The peer seems to be a server which supports the
 			 * IRC+ protocol (see doc/Protocol.txt). */
-			serverver = ptr + 1;
-			flags = strchr(serverver, ':');
+			serverver = ptr ? ptr + 1 : "?";
+			flags = strchr(ptr ? serverver : impl, ':');
 			if (flags) {
 				*flags = '\0';
 				flags++;