summaryrefslogtreecommitdiff
path: root/event_tagging.c
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2014-08-29 14:59:17 -0400
committerNick Mathewson <nickm@torproject.org>2014-08-29 14:59:17 -0400
commit60f8f729d364304abefa25d029260555a5954077 (patch)
tree4981c6427434d6d847fab9b05c24e2b1ea075ec5 /event_tagging.c
parent6466e88ac1dac48eaa9435ce9a45d6496eed7abb (diff)
downloadlibevent-60f8f729d364304abefa25d029260555a5954077.tar.gz
Consistently check for failure from evbuffer_pullup()
Closes issue #148.
Diffstat (limited to 'event_tagging.c')
-rw-r--r--event_tagging.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/event_tagging.c b/event_tagging.c
index a83e719f..eea4bfce 100644
--- a/event_tagging.c
+++ b/event_tagging.c
@@ -206,6 +206,8 @@ decode_tag_internal(ev_uint32_t *ptag, struct evbuffer *evbuf, int dodrain)
*/
data = evbuffer_pullup(
evbuf, len < sizeof(number) + 1 ? len : sizeof(number) + 1);
+ if (!data)
+ return (-1);
while (count++ < len) {
ev_uint8_t lower = *data++;
@@ -312,6 +314,8 @@ do { \
\
/* XXX(niels): faster? */ \
data = evbuffer_pullup(evbuf, offset + 1) + offset; \
+ if (!data) \
+ return (-1); \
\
nibbles = ((data[0] & 0xf0) >> 4) + 1; \
if (nibbles > maxnibbles || (nibbles >> 1) + 1 > len) \
@@ -319,6 +323,8 @@ do { \
len = (nibbles >> 1) + 1; \
\
data = evbuffer_pullup(evbuf, offset + len) + offset; \
+ if (!data) \
+ return (-1); \
\
while (nibbles > 0) { \
number <<= 4; \