From a3d4c475151c37ae445b44b9c19f982e98e2a573 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Tue, 9 Oct 2007 19:05:38 +0000 Subject: [PATCH] r15587@catbus: nickm | 2007-10-09 15:05:27 -0400 When parsing two concatenated networkstatuses (as we do when voting), detect the end of the first one properly. svn:r11810 --- src/or/routerparse.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/or/routerparse.c b/src/or/routerparse.c index 0198233955..ed8fbe384a 100644 --- a/src/or/routerparse.c +++ b/src/or/routerparse.c @@ -1531,12 +1531,17 @@ static INLINE const char * find_start_of_next_routerstatus(const char *s) { const char *eos = strstr(s, "\nr "); - if (!eos) - eos = strstr(s, "\ndirectory-signature"); - if (eos) - return eos+1; - else + if (eos) { + const char *eos2 = tor_memstr(s, eos-s, "\ndirectory-signature"); + if (eos2 && eos2 < eos) + return eos2; + else + return eos+1; + } else { + if ((eos = strstr(s, "\ndirectory-signature"))) + return eos+1; return s + strlen(s); + } } /** Given a string at *s, containing a routerstatus object, and an