Defensive programming: clear rs_out between iterations.

I can't currently find a bug here, but there are a couple of
near-misses.  Addresses ticket 6514; reported pseudonymously on
IRC.
This commit is contained in:
Nick Mathewson 2012-08-01 17:25:34 -04:00
parent 122c8efb09
commit 2d6d5db2fe
2 changed files with 6 additions and 0 deletions

5
changes/bug6514 Normal file
View File

@ -0,0 +1,5 @@
o Minor bugfixes:
- Add a (probably redundant) memory clear between iterations of
the router status voting loop, to prevent future coding errors
where data might leak between iterations of the loop. Resolves
ticket 6514.

View File

@ -1752,6 +1752,7 @@ networkstatus_compute_consensus(smartlist_t *votes,
rs = compute_routerstatus_consensus(matching_descs, consensus_method,
microdesc_digest);
/* Copy bits of that into rs_out. */
memset(&rs_out, 0, sizeof(rs_out));
tor_assert(fast_memeq(lowest_id, rs->status.identity_digest,DIGEST_LEN));
memcpy(rs_out.identity_digest, lowest_id, DIGEST_LEN);
memcpy(rs_out.descriptor_digest, rs->status.descriptor_digest,