From: Pekka Riikonen Date: Fri, 27 Feb 2009 14:22:36 +0000 (+0200) Subject: PacketEngine: Don't free underlaying stream in packet stream create error X-Git-Tag: silc.server.1.1.16~3 X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=commitdiff_plain;h=226f97eb5ab714b58bfb2cba0cb50d025884bb13 PacketEngine: Don't free underlaying stream in packet stream create error If packet stream creation failed it freed the stream given as argument. This is wrong. It is the caller's responsibility to free it if the packet stream creation failed. --- diff --git a/lib/silccore/silcpacket.c b/lib/silccore/silcpacket.c index b6715675..5ccf822f 100644 --- a/lib/silccore/silcpacket.c +++ b/lib/silccore/silcpacket.c @@ -4,7 +4,7 @@ Author: Pekka Riikonen - Copyright (C) 1997 - 2008 Pekka Riikonen + Copyright (C) 1997 - 2009 Pekka Riikonen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -710,6 +710,7 @@ SilcPacketStream silc_packet_stream_create(SilcPacketEngine engine, /* Initialize packet procesors list */ ps->process = silc_dlist_init(); if (!ps->process) { + ps->stream = NULL; silc_packet_stream_destroy(ps); return NULL; } @@ -722,6 +723,7 @@ SilcPacketStream silc_packet_stream_create(SilcPacketEngine engine, ps->sc = silc_calloc(1, sizeof(*ps->sc)); if (!ps->sc) { silc_mutex_unlock(engine->lock); + ps->stream = NULL; silc_packet_stream_destroy(ps); return NULL; } @@ -734,6 +736,7 @@ SilcPacketStream silc_packet_stream_create(SilcPacketEngine engine, silc_free(ps->sc); ps->sc = NULL; silc_mutex_unlock(engine->lock); + ps->stream = NULL; silc_packet_stream_destroy(ps); return NULL; } @@ -745,6 +748,7 @@ SilcPacketStream silc_packet_stream_create(SilcPacketEngine engine, silc_free(ps->sc); ps->sc = NULL; silc_mutex_unlock(engine->lock); + ps->stream = NULL; silc_packet_stream_destroy(ps); return NULL; } @@ -757,6 +761,7 @@ SilcPacketStream silc_packet_stream_create(SilcPacketEngine engine, silc_free(ps->sc); ps->sc = NULL; silc_mutex_unlock(engine->lock); + ps->stream = NULL; silc_packet_stream_destroy(ps); return NULL; } @@ -779,6 +784,7 @@ SilcPacketStream silc_packet_stream_create(SilcPacketEngine engine, if (!silc_stream_set_notifier(ps->stream, schedule, silc_packet_stream_io, ps)) { SILC_LOG_DEBUG(("Cannot set stream notifier for packet stream")); + ps->stream = NULL; silc_packet_stream_destroy(ps); return NULL; }