repo: ngircd
action: commit
revision: 
path_from: 
revision_from: 8700f4d93cb50ebe7639e7a32e93b94c36ed3fae:
path_to: 
revision_to: 
git.thebackupbox.net
ngircd
git clone git://git.thebackupbox.net/ngircd
commit 8700f4d93cb50ebe7639e7a32e93b94c36ed3fae
Author: Alexander Barton 
Date:   Sun Jan 23 18:38:36 2011 +0100

    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
     parameter ...

diff --git a/src/ngircd/irc-login.c b/src/ngircd/irc-login.c
index 73dd8d1f99fee375edca2d8591e02de1d96f9cac..
index ..8af4df95f6957171a42b1432e660266afd7589f4 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++;

-----END OF PAGE-----