Zero-initialize heartbeat test write buffer
authorMike Bland <mbland@acm.org>
Thu, 1 May 2014 14:10:14 +0000 (10:10 -0400)
committerBen Laurie <ben@links.org>
Mon, 19 May 2014 16:39:41 +0000 (17:39 +0100)
commit39dd6f4549cf4474f6f6eb4cf9983380215a1c21
treed1a9c203583067d11c992598a893d85241c4c55c
parentf5ad068b01a4adae1e1dd4103b5ce7e5e1442f6c
Zero-initialize heartbeat test write buffer

The previous calls to memset() were added to tear_down() when I noticed the
test spuriously failing in opt mode, with different results each time. This
appeared to be because the allocator zeros out memory in debug mode, but not
in opt mode. Since the heartbeat functions silently drop the request on error
without modifying the contents of the write buffer, whatever random contents
were in memory before being reallocated to the write buffer used in the test
would cause nondeterministic test failures in the Heartbleed regression cases.
Adding these calls allowed the test to pass in both debug and opt modes.

Ben Laurie notified me offline that the test was aborting in
debug-ben-debug-64-clang mode, configured with GitConfigure and built with
GitMake. Looking into this, I realized the first memset() call was zeroing out
a reference count used by SSL_free() that was checked in
debug-ben-debug-64-clang mode but not in the normal debug mode.

Removing the memset() calls from tear_down() and adding a memset() for the
write buffer in set_up() addresses the issue and allows the test to
successfully execute in debug, opt, and debug-ben-debug-64-clang modes.
ssl/heartbeat_test.c