diff options
author | Nick Mathewson <nickm@torproject.org> | 2010-11-02 11:49:58 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2010-11-10 16:02:02 -0500 |
commit | 2a50dd9359ec9bd113c64aa91cb5c2dd875de7dd (patch) | |
tree | c62e04937fd5c71f54ecb5396192c72e729afc5e | |
parent | 089137f0112b0ad7c8ada8f2d5c7a967cfb87387 (diff) | |
download | tor-2a50dd9359ec9bd113c64aa91cb5c2dd875de7dd.tar tor-2a50dd9359ec9bd113c64aa91cb5c2dd875de7dd.tar.gz |
Enforce multiplicity rules when parsing annotations.
We would never actually enforce multiplicity rules when parsing
annotations, since the counts array never got entries added to it for
annotations in the token list that got added by earlier calls to
tokenize_string.
Found by piebeer.
-rw-r--r-- | changes/annotations_fix | 4 | ||||
-rw-r--r-- | src/or/routerparse.c | 3 |
2 files changed, 6 insertions, 1 deletions
diff --git a/changes/annotations_fix b/changes/annotations_fix index d3cd7f343..b259a306d 100644 --- a/changes/annotations_fix +++ b/changes/annotations_fix @@ -4,5 +4,7 @@ Previously we would ignore such annotations at first, but cache them to disk anyway. Bugfix on 0.2.0.8-alpha. Found by piebeer. - + o Minor bugfixes + - Enforce multiplicity rules when parsing annotations. Bugfix on + 0.2.0.8-alpha. Found by piebeer. diff --git a/src/or/routerparse.c b/src/or/routerparse.c index da08e4664..3d8ca1431 100644 --- a/src/or/routerparse.c +++ b/src/or/routerparse.c @@ -3181,6 +3181,9 @@ tokenize_string(memarea_t *area, end = start+strlen(start); for (i = 0; i < _NIL; ++i) counts[i] = 0; + + SMARTLIST_FOREACH(out, const directory_token_t *, t, ++counts[t->tp]); + while (*s < end && (!tok || tok->tp != _EOF)) { tok = get_next_token(area, s, end, table); if (tok->tp == _ERR) { |