diff options
author | Dan Winship <danw@gnome.org> | 2009-08-24 12:30:49 -0400 |
---|---|---|
committer | Dan Winship <danw@gnome.org> | 2009-08-24 12:34:49 -0400 |
commit | 483ab463738f9462bcb2ca38d5dc6439f682d72b (patch) | |
tree | 82626ef6f0d87767cfe4242150d9ed417727ca5a | |
parent | 3d0441b3f0c402447306f53789a47abdc573f8f3 (diff) | |
download | libsoup-483ab463738f9462bcb2ca38d5dc6439f682d72b.tar.gz |
Fix some leaks in the error cases of soup_multipart_new_from_message()
Noticed by Xan Lopez while looking for a different leak.
-rw-r--r-- | libsoup/soup-multipart.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/libsoup/soup-multipart.c b/libsoup/soup-multipart.c index 50b35492..67f0e9ca 100644 --- a/libsoup/soup-multipart.c +++ b/libsoup/soup-multipart.c @@ -162,6 +162,7 @@ soup_multipart_new_from_message (SoupMessageHeaders *headers, start = find_boundary (flattened->data, boundary, boundary_len); if (!start) { soup_multipart_free (multipart); + soup_buffer_free (flattened); return NULL; } @@ -169,12 +170,14 @@ soup_multipart_new_from_message (SoupMessageHeaders *headers, end = find_boundary (start + 2 + boundary_len, boundary, boundary_len); if (!end) { soup_multipart_free (multipart); + soup_buffer_free (flattened); return NULL; } split = strstr (start, "\r\n\r\n"); if (!split || split > end) { soup_multipart_free (multipart); + soup_buffer_free (flattened); return NULL; } split += 4; @@ -193,6 +196,7 @@ soup_multipart_new_from_message (SoupMessageHeaders *headers, if (!soup_headers_parse (start, split - 2 - start, part_headers)) { soup_multipart_free (multipart); + soup_buffer_free (flattened); return NULL; } |