repo: ngircd
action: commit
revision: 
path_from: 
revision_from: 52ccba5d1e8cd2e648cf3c14598332bde6b9910d:
path_to: 
revision_to: 
git.thebackupbox.net
ngircd
git clone git://git.thebackupbox.net/ngircd
commit 52ccba5d1e8cd2e648cf3c14598332bde6b9910d
Author: Alexander Barton 
Date:   Sun Dec 13 21:48:31 2015 +0100

    IRC_KillClient(): Don't break when called without "Client"

    The IRC_KillClient() function is documented to handle the case that the
    "Client" structure is NULL, so make sure that this actually works and
    can't crash the daemon.

    Please note:
    The current code doesn't make use of this feature, so this fix is
    definitely the "right" thing to do but doesn't fix an actual problem.

diff --git a/src/ngircd/irc.c b/src/ngircd/irc.c
index cfe616f5f33ac9845c9cfbdf92392f183bfdc9a8..
index ..ad8c0506905eca3fdaf5787914be740b7a4b9e21 100644
--- a/src/ngircd/irc.c
+++ b/src/ngircd/irc.c
@@ -339,9 +339,12 @@ GLOBAL bool
 IRC_KillClient(CLIENT *Client, CLIENT *From, const char *Nick, const char *Reason)
 {
 	const char *msg;
-	CONN_ID my_conn, conn;
+	CONN_ID my_conn = NONE, conn;
 	CLIENT *c;

+	assert(Nick != NULL);
+	assert(Reason != NULL);
+
 	/* Do we know such a client in the network? */
 	c = Client_Search(Nick);
 	if (!c) {
@@ -376,7 +379,8 @@ IRC_KillClient(CLIENT *Client, CLIENT *From, const char *Nick, const char *Reaso
 	}

 	/* Save ID of this connection */
-	my_conn = Client_Conn(Client);
+	if (Client)
+		my_conn = Client_Conn(Client);

 	/* Kill the client NOW:
 	 *  - Close the local connection (if there is one),

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