summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2017-02-15 07:58:10 -0500
committerNick Mathewson <nickm@torproject.org>2017-02-15 07:58:10 -0500
commitff649ec2d91e9471c9cd9d13132922fe270ab7d9 (patch)
tree4e6f9da9514f72e8655ee4c582edeccc171261b2
parent35f449c8b92b5904b221da7e1ed145910dbe5819 (diff)
parentcb6b3b7cadb641b648577e5d5536735222cc68da (diff)
downloadtor-ff649ec2d91e9471c9cd9d13132922fe270ab7d9.tar.gz
tor-ff649ec2d91e9471c9cd9d13132922fe270ab7d9.zip
Merge branch 'maint-0.2.9' into release-0.2.9
-rw-r--r--changes/bug214504
-rw-r--r--src/or/routerparse.c5
2 files changed, 8 insertions, 1 deletions
diff --git a/changes/bug21450 b/changes/bug21450
new file mode 100644
index 0000000000..a1cf89ab41
--- /dev/null
+++ b/changes/bug21450
@@ -0,0 +1,4 @@
+ o Minor bugfixes (voting consistency):
+ - Reject version numbers with components that exceed INT32_MAX.
+ Otherwise 32-bit and 64-bit platforms would behave inconsistently.
+ Fixes bug 21450; bugfix on 0.0.8pre1.
diff --git a/src/or/routerparse.c b/src/or/routerparse.c
index a896dde2b3..c325412e39 100644
--- a/src/or/routerparse.c
+++ b/src/or/routerparse.c
@@ -5605,6 +5605,7 @@ tor_version_parse(const char *s, tor_version_t *out)
{
char *eos=NULL;
const char *cp=NULL;
+ int ok = 1;
/* Format is:
* "Tor " ? NUM dot NUM [ dot NUM [ ( pre | rc | dot ) NUM ] ] [ - tag ]
*/
@@ -5620,7 +5621,9 @@ tor_version_parse(const char *s, tor_version_t *out)
#define NUMBER(m) \
do { \
- out->m = (int)strtol(cp, &eos, 10); \
+ out->m = (int)tor_parse_uint64(val, 10, 0, INT32_MAX, &ok, &eos); \
+ if (!ok) \
+ return -1; \
if (!eos || eos == cp) \
return -1; \
cp = eos; \