mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-11 05:33:47 +01:00
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
This commit is contained in:
parent
ab1fd85c99
commit
5766eed38f
@ -859,7 +859,7 @@ consdiff_get_digests(smartlist_t *diff,
|
|||||||
const char *format;
|
const char *format;
|
||||||
char cons1_hash[DIGEST256_LEN], cons2_hash[DIGEST256_LEN];
|
char cons1_hash[DIGEST256_LEN], cons2_hash[DIGEST256_LEN];
|
||||||
char *cons1_hash_hex, *cons2_hash_hex;
|
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.");
|
log_info(LD_CONSDIFF, "The provided consensus diff is too short.");
|
||||||
goto error_cleanup;
|
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);
|
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;
|
common_digests_t cons2_digests;
|
||||||
if (router_get_networkstatus_v3_hashes(cons2_str,
|
if (router_get_networkstatus_v3_hashes(cons2_str,
|
||||||
@ -1014,18 +1012,17 @@ consdiff_apply_diff(smartlist_t *cons1, smartlist_t *diff,
|
|||||||
goto error_cleanup;
|
goto error_cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
return cons2_str;
|
goto done;
|
||||||
|
|
||||||
error_cleanup:
|
error_cleanup:
|
||||||
|
tor_free(cons2_str); /* Sets it to NULL */
|
||||||
|
|
||||||
|
done:
|
||||||
if (cons2) {
|
if (cons2) {
|
||||||
SMARTLIST_FOREACH(cons2, char *, cp, tor_free(cp));
|
SMARTLIST_FOREACH(cons2, char *, cp, tor_free(cp));
|
||||||
smartlist_free(cons2);
|
smartlist_free(cons2);
|
||||||
}
|
}
|
||||||
if (cons2_str) {
|
|
||||||
tor_free(cons2_str);
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
return cons2_str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user