mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-20 10:12:15 +01:00
add a unit test to expose bug 7192
This commit is contained in:
parent
1cc06bd35e
commit
4c8b58f900
@ -1413,6 +1413,33 @@ parse_short_policy(const char *summary)
|
||||
return result;
|
||||
}
|
||||
|
||||
/** Write <b>policy</b> back out into a string. Used only for unit tests
|
||||
* currently. */
|
||||
const char *
|
||||
write_short_policy(const short_policy_t *policy)
|
||||
{
|
||||
int i;
|
||||
char *answer;
|
||||
smartlist_t *sl = smartlist_new();
|
||||
|
||||
smartlist_add_asprintf(sl, "%s", policy->is_accept ? "accept " : "reject ");
|
||||
|
||||
for(i=0; i < policy->n_entries; i++) {
|
||||
const short_policy_entry_t *e = &policy->entries[i];
|
||||
if (e->min_port == e->max_port) {
|
||||
smartlist_add_asprintf(sl, "%d", e->min_port);
|
||||
} else {
|
||||
smartlist_add_asprintf(sl, "%d-%d", e->min_port, e->max_port);
|
||||
}
|
||||
if (i < policy->n_entries-1)
|
||||
smartlist_add(sl, tor_strdup(","));
|
||||
}
|
||||
answer = smartlist_join_strings(sl, "", 0, NULL);
|
||||
SMARTLIST_FOREACH(sl, char *, a, tor_free(a));
|
||||
smartlist_free(sl);
|
||||
return answer;
|
||||
}
|
||||
|
||||
/** Release all storage held in <b>policy</b>. */
|
||||
void
|
||||
short_policy_free(short_policy_t *policy)
|
||||
|
@ -61,6 +61,7 @@ void policies_free_all(void);
|
||||
char *policy_summarize(smartlist_t *policy);
|
||||
|
||||
short_policy_t *parse_short_policy(const char *summary);
|
||||
const char *write_short_policy(const short_policy_t *policy);
|
||||
void short_policy_free(short_policy_t *policy);
|
||||
int short_policy_is_reject_star(const short_policy_t *policy);
|
||||
addr_policy_result_t compare_tor_addr_to_short_policy(
|
||||
|
@ -1014,6 +1014,7 @@ test_policy_summary_helper(const char *policy_str,
|
||||
config_line_t line;
|
||||
smartlist_t *policy = smartlist_new();
|
||||
char *summary = NULL;
|
||||
const char *summary_after;
|
||||
int r;
|
||||
short_policy_t *short_policy = NULL;
|
||||
|
||||
@ -1030,8 +1031,11 @@ test_policy_summary_helper(const char *policy_str,
|
||||
|
||||
short_policy = parse_short_policy(summary);
|
||||
tt_assert(short_policy);
|
||||
summary_after = write_short_policy(short_policy);
|
||||
test_streq(summary, summary_after);
|
||||
|
||||
done:
|
||||
tor_free(summary_after);
|
||||
tor_free(summary);
|
||||
if (policy)
|
||||
addr_policy_list_free(policy);
|
||||
|
Loading…
Reference in New Issue
Block a user