From: Nick Mathewson Date: Wed, 31 Mar 2010 16:03:43 +0000 (-0400) Subject: Fix a memory leak when appending/prepending to a buffer with unused space. X-Git-Tag: release-2.0.5-beta~65 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=45068a312c0c2c6c4e9a144a837fd2f9d5310840;p=libevent Fix a memory leak when appending/prepending to a buffer with unused space. --- diff --git a/buffer.c b/buffer.c index 22a37736..6376e9cd 100644 --- a/buffer.c +++ b/buffer.c @@ -701,7 +701,9 @@ evbuffer_add_buffer(struct evbuffer *outbuf, struct evbuffer *inbuf) } if (out_total_len == 0) { - /* XXX need to free old outbuf chains */ + /* There might be an empty chain at the start of outbuf; free + * it. */ + evbuffer_free_all_chains(outbuf->first); COPY_CHAIN(outbuf, inbuf); } else { APPEND_CHAIN(outbuf, inbuf); @@ -740,7 +742,9 @@ evbuffer_prepend_buffer(struct evbuffer *outbuf, struct evbuffer *inbuf) } if (out_total_len == 0) { - /* XXX need to free old outbuf chains */ + /* There might be an empty chain at the start of outbuf; free + * it. */ + evbuffer_free_all_chains(outbuf->first); COPY_CHAIN(outbuf, inbuf); } else { PREPEND_CHAIN(outbuf, inbuf);