[dovecot-cvs] dovecot/src/login-common master.c,1.11,1.12

cras at dovecot.org cras at dovecot.org
Wed Nov 24 18:46:18 EET 2004


Update of /var/lib/cvs/dovecot/src/login-common
In directory talvi:/tmp/cvs-serv5988

Modified Files:
	master.c 
Log Message:
Don't access freed memory.



Index: master.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/login-common/master.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- master.c	19 Oct 2004 01:17:39 -0000	1.11
+++ master.c	24 Nov 2004 16:46:15 -0000	1.12
@@ -24,16 +24,20 @@
 static void request_handle(struct master_login_reply *reply)
 {
 	struct client *client;
+	master_callback_t *master_callback;
 
 	client = hash_lookup(master_requests, POINTER_CAST(reply->tag));
 	if (client == NULL)
 		i_fatal("Master sent reply with unknown tag %u", reply->tag);
 
+	master_callback = client->master_callback;
 	client->master_tag = 0;
-	client->master_callback(client, reply->success);
 	client->master_callback = NULL;
 
 	hash_remove(master_requests, POINTER_CAST(reply->tag));
+
+	master_callback(client, reply->success);
+	/* NOTE: client may be destroyed now */
 }
 
 void master_request_login(struct client *client, master_callback_t *callback,



More information about the dovecot-cvs mailing list