From 11c8b317542c86eca2cca585d31f93da285c10a7 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Tue, 17 Jul 2012 11:08:25 -0400 Subject: [PATCH] Fix a memory leak on error in evhttp_uriencode If we ran out of memory in evhttp_uriencode when allocating the output buffer, we would neglect to call evbuffer_free() on our temporary buffer. Now we always free the temporary buffer. Fixes sourceforge issue 3539887. Thanks to Andrew Cox for reporting this one. --- http.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/http.c b/http.c index b9687df6..b9714d33 100644 --- a/http.c +++ b/http.c @@ -2685,9 +2685,8 @@ evhttp_uriencode(const char *uri, ev_ssize_t len, int space_as_plus) } evbuffer_add(buf, "", 1); /* NUL-terminator. */ result = mm_malloc(evbuffer_get_length(buf)); - if (!result) - return NULL; - evbuffer_remove(buf, result, evbuffer_get_length(buf)); + if (result) + evbuffer_remove(buf, result, evbuffer_get_length(buf)); evbuffer_free(buf); return (result);