summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2018-10-25 09:08:02 -0400
committerNick Mathewson <nickm@torproject.org>2018-10-25 09:08:02 -0400
commit0878bb961f9028a81ce465702afb891a82015228 (patch)
tree7fcb9a8d762ea3d94a929bc7c0580b78c39dd268
parent368413a321a65234c0256c4ea80c613207cf7587 (diff)
downloadtor-0878bb961f9028a81ce465702afb891a82015228.tar.gz
tor-0878bb961f9028a81ce465702afb891a82015228.zip
Fix two other cases of (buf + N > end) pattern
Related to fix for 28202.
-rw-r--r--src/or/routerparse.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/or/routerparse.c b/src/or/routerparse.c
index 063cbbcdaf..37d2d975fc 100644
--- a/src/or/routerparse.c
+++ b/src/or/routerparse.c
@@ -5299,13 +5299,13 @@ find_start_of_next_microdesc(const char *s, const char *eos)
return NULL;
#define CHECK_LENGTH() STMT_BEGIN \
- if (s+32 > eos) \
+ if (eos - s < 32) \
return NULL; \
STMT_END
#define NEXT_LINE() STMT_BEGIN \
s = memchr(s, '\n', eos-s); \
- if (!s || s+1 >= eos) \
+ if (!s || eos - s <= 1) \
return NULL; \
s++; \
STMT_END
@@ -5329,7 +5329,7 @@ find_start_of_next_microdesc(const char *s, const char *eos)
/* Okay, now we're pointed at the first line of the microdescriptor which is
not an annotation or onion-key. The next line that _is_ an annotation or
onion-key is the start of the next microdescriptor. */
- while (s+32 < eos) {
+ while (eos - s > 32) {
if (*s == '@' || !strcmpstart(s, "onion-key"))
return s;
NEXT_LINE();
@@ -6359,4 +6359,3 @@ routerparse_free_all(void)
{
dump_desc_fifo_cleanup();
}
-