[srvx-commits] CVS: services/src chanserv.c,1.399,1.400
Brought to you by:
entrope
From: Entrope <en...@us...> - 2003-12-15 18:39:02
|
Update of /cvsroot/srvx/services/src In directory sc8-pr-cvs1:/tmp/cvs-serv26008/src Modified Files: chanserv.c Log Message: fix a read-after-free when unregistering a channel Index: chanserv.c =================================================================== RCS file: /cvsroot/srvx/services/src/chanserv.c,v retrieving revision 1.399 retrieving revision 1.400 diff -C2 -r1.399 -r1.400 *** chanserv.c 13 Dec 2003 16:55:51 -0000 1.399 --- chanserv.c 15 Dec 2003 18:38:58 -0000 1.400 *************** *** 1444,1469 **** free(suspended->suspender); free(suspended->reason); ! if(suspended->expires) timeq_del(suspended->expires, chanserv_expire_suspension, suspended, 0); free(suspended); } if(cNode) - { cNode->channel_info = NULL; - } } - channel->channel->channel_info = NULL; - UnlockChannel(channel->channel); ! if(channel->notes) dict_delete(channel->notes); ! sprintf(msgbuf, "%s %s", channel->channel->name, reason); if(!IsSuspended(channel)) - { DelChannelUser(chanserv, channel->channel, msgbuf, 0); ! } global_message(MESSAGE_RECIPIENT_OPERS | MESSAGE_RECIPIENT_HELPERS, msgbuf); free(channel); - registered_channels--; } --- 1444,1465 ---- free(suspended->suspender); free(suspended->reason); ! if(suspended->expires) ! timeq_del(suspended->expires, chanserv_expire_suspension, suspended, 0); free(suspended); } if(cNode) cNode->channel_info = NULL; } channel->channel->channel_info = NULL; ! if(channel->notes) ! dict_delete(channel->notes); if(!IsSuspended(channel)) DelChannelUser(chanserv, channel->channel, msgbuf, 0); ! sprintf(msgbuf, "%s %s", channel->channel->name, reason); global_message(MESSAGE_RECIPIENT_OPERS | MESSAGE_RECIPIENT_HELPERS, msgbuf); + UnlockChannel(channel->channel); free(channel); registered_channels--; } |