aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2013-05-09 13:20:01 -0400
committerNick Mathewson <nickm@torproject.org>2013-05-09 13:20:01 -0400
commit82ab33c9a66a9c45e9512b698ef203b1aaca7a3d (patch)
tree22d074c4f7606ccb31a56f43ad5db74233d3d488 /src
parent8f21838ee5305b89c4089a06ca51e95bc89ae053 (diff)
parentbae5dd6c8d4535360d471932b87431f54b515567 (diff)
downloadtor-82ab33c9a66a9c45e9512b698ef203b1aaca7a3d.tar.gz
tor-82ab33c9a66a9c45e9512b698ef203b1aaca7a3d.zip
Merge remote-tracking branch 'origin/maint-0.2.4'
Diffstat (limited to 'src')
-rw-r--r--src/or/buffers.c3
-rw-r--r--src/test/test.c12
2 files changed, 14 insertions, 1 deletions
diff --git a/src/or/buffers.c b/src/or/buffers.c
index 47fa31dc07..d063d23135 100644
--- a/src/or/buffers.c
+++ b/src/or/buffers.c
@@ -148,7 +148,8 @@ static INLINE chunk_freelist_t *
get_freelist(size_t alloc)
{
int i;
- for (i=0; freelists[i].alloc_size <= alloc; ++i) {
+ for (i=0; (freelists[i].alloc_size <= alloc &&
+ freelists[i].alloc_size); ++i ) {
if (freelists[i].alloc_size == alloc) {
return &freelists[i];
}
diff --git a/src/test/test.c b/src/test/test.c
index fe4513c7ee..c0f57d46f5 100644
--- a/src/test/test.c
+++ b/src/test/test.c
@@ -813,6 +813,18 @@ test_buffers(void)
buf_free(buf);
buf = NULL;
+ /* Try adding a string too long for any freelist. */
+ {
+ char *cp = tor_malloc_zero(65536);
+ buf = buf_new();
+ write_to_buf(cp, 65536, buf);
+ tor_free(cp);
+
+ tt_int_op(buf_datalen(buf), ==, 65536);
+ buf_free(buf);
+ buf = NULL;
+ }
+
done:
if (buf)
buf_free(buf);