diff options
| author | Alexander Barton <alex@barton.de> | 2011-01-23 18:38:36 +0100 |
|---|---|---|
| committer | Alexander Barton <alex@barton.de> | 2011-01-23 18:38:36 +0100 |
| commit | 8700f4d93cb50ebe7639e7a32e93b94c36ed3fae (patch) | |
| tree | 6d6e3a4d2efc908410f89885c2c9f4f3fa19742c | |
| parent | 765dc320f11f117d63e5285a903dfe8af4a48795 (diff) | |
| download | ngircd-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 ...
| -rw-r--r-- | src/ngircd/irc-login.c | 4 |
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++; |