summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2017-07-14 13:56:40 -0400
committerNick Mathewson <nickm@torproject.org>2017-07-14 15:05:30 -0400
commitb7566d465f0299e97b46f40d746a1203257245d4 (patch)
treef0f548d533e5d566bdc92cb2099405e5dd33d066
parent527c0735f11d5a36aa1fb84dc30b624139ba8406 (diff)
downloadtor-b7566d465f0299e97b46f40d746a1203257245d4.tar.gz
tor-b7566d465f0299e97b46f40d746a1203257245d4.zip
Fix a signed integer overflow in dir/download_status_random_backoff
Fix for 22924. Bugfix on 0.2.9.1-alpha when the test was introducd -- though it couldn't actually overflow until we fixed 17750. Additionally, this only seems to overflow on 32-bit, and only when the compiler doesn't re-order the (possibly dead) assignment out of the way. We ran into it on a 32-bit ubuntu trusty builder.
-rw-r--r--changes/bug229244
-rw-r--r--src/test/test_dir.c4
2 files changed, 7 insertions, 1 deletions
diff --git a/changes/bug22924 b/changes/bug22924
new file mode 100644
index 0000000000..e59fc724eb
--- /dev/null
+++ b/changes/bug22924
@@ -0,0 +1,4 @@
+ o Minor bugfies (tests):
+ - Fix a signed-integer overflow in the unit tests for
+ dir/download_status_random_backoff, which was untriggered until we
+ fixed bug 17750. Fixes bug 22924; bugfix on 0.2.9.1-alpha.
diff --git a/src/test/test_dir.c b/src/test/test_dir.c
index 53911e8a26..729ae643b5 100644
--- a/src/test/test_dir.c
+++ b/src/test/test_dir.c
@@ -3657,12 +3657,14 @@ download_status_random_backoff_helper(int min_delay, int max_delay)
}
/* Advance */
- current_time += increment;
++(dls_random.n_download_attempts);
++(dls_random.n_download_failures);
/* Try another maybe */
old_increment = increment;
+ if (increment >= max_delay)
+ current_time += increment;
+
} while (increment < max_delay);
done: