summaryrefslogtreecommitdiff
path: root/buffer.c
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2012-07-26 10:45:10 -0400
committerNick Mathewson <nickm@torproject.org>2012-07-26 10:45:10 -0400
commit6a81b1f5a423aa5ec237c085c94bdc0a6cfd9e5d (patch)
tree58e8fc9f60e7fcc06cf9ca98fe6e5a7829bd9e4f /buffer.c
parent6487f63b79cfbc22262720ac6afbb51de819c2aa (diff)
downloadlibevent-6a81b1f5a423aa5ec237c085c94bdc0a6cfd9e5d.tar.gz
Avoid double-free on error in evbuffer_add_file. Found by coverity.
Diffstat (limited to 'buffer.c')
-rw-r--r--buffer.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/buffer.c b/buffer.c
index 38048d40..89311af5 100644
--- a/buffer.c
+++ b/buffer.c
@@ -3184,7 +3184,8 @@ evbuffer_add_file(struct evbuffer *buf, int fd, ev_off_t offset, ev_off_t length
if (!seg)
return -1;
r = evbuffer_add_file_segment(buf, seg, 0, length);
- evbuffer_file_segment_free(seg);
+ if (r == 0)
+ evbuffer_file_segment_free(seg);
return r;
}