[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [tor/master] Fixes when applying diffs: Allow 2-line diffs, fix bogus free
commit 5766eed38f3fbf150691bcae84d82a1c16dbeb48
Author: Nick Mathewson <nickm@xxxxxxxxxxxxxx>
Date: Tue Mar 7 11:35:50 2017 -0500
Fixes when applying diffs: Allow 2-line diffs, fix bogus free
The 2-line diff changs is needed to make the unit tests actually
test the cases that they thought they were testing.
The bogus free was found while testing those cases
---
src/or/consdiff.c | 15 ++++++---------
1 file changed, 6 insertions(+), 9 deletions(-)
diff --git a/src/or/consdiff.c b/src/or/consdiff.c
index ed20e3b..defa1cf 100644
--- a/src/or/consdiff.c
+++ b/src/or/consdiff.c
@@ -859,7 +859,7 @@ consdiff_get_digests(smartlist_t *diff,
const char *format;
char cons1_hash[DIGEST256_LEN], cons2_hash[DIGEST256_LEN];
char *cons1_hash_hex, *cons2_hash_hex;
- if (smartlist_len(diff) < 3) {
+ if (smartlist_len(diff) < 2) {
log_info(LD_CONSDIFF, "The provided consensus diff is too short.");
goto error_cleanup;
}
@@ -986,8 +986,6 @@ consdiff_apply_diff(smartlist_t *cons1, smartlist_t *diff,
}
cons2_str = smartlist_join_strings(cons2, "\n", 1, NULL);
- SMARTLIST_FOREACH(cons2, char *, cp, tor_free(cp));
- smartlist_free(cons2);
common_digests_t cons2_digests;
if (router_get_networkstatus_v3_hashes(cons2_str,
@@ -1014,18 +1012,17 @@ consdiff_apply_diff(smartlist_t *cons1, smartlist_t *diff,
goto error_cleanup;
}
- return cons2_str;
+ goto done;
- error_cleanup:
+ error_cleanup:
+ tor_free(cons2_str); /* Sets it to NULL */
+ done:
if (cons2) {
SMARTLIST_FOREACH(cons2, char *, cp, tor_free(cp));
smartlist_free(cons2);
}
- if (cons2_str) {
- tor_free(cons2_str);
- }
- return NULL;
+ return cons2_str;
}
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits