network: fix segfault in manager_free()

Fixes #10605.
This commit is contained in:
Yu Watanabe 2018-11-01 20:21:26 +09:00
parent 46054ac030
commit f19ee68140
1 changed files with 4 additions and 2 deletions

View File

@ -1451,8 +1451,10 @@ void manager_free(Manager *m) {
while ((pool = m->address_pools))
address_pool_free(pool);
set_free_with_destructor(m->rules, routing_policy_rule_free);
set_free_with_destructor(m->rules_foreign, routing_policy_rule_free);
/* routing_policy_rule_free() access m->rules and m->rules_foreign.
* So, it is necessary to set NULL after the sets are freed. */
m->rules = set_free_with_destructor(m->rules, routing_policy_rule_free);
m->rules_foreign = set_free_with_destructor(m->rules_foreign, routing_policy_rule_free);
set_free_with_destructor(m->rules_saved, routing_policy_rule_free);
sd_event_unref(m->event);