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.
This commit is contained in:
Nick Mathewson 2012-07-17 11:08:25 -04:00
parent 160e58b67d
commit 11c8b31754

5
http.c
View File

@ -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);