1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2025-02-04 17:47:03 +03:00

network: check stored object is euivalent to what we want to remove

When object A is stored in Manager::rules and B is in ::rules_foreign,
and compare function for the object cannot distinguish them,
then freeing A causes B to be removed from rules_foreign or vice versa.

Hopefully fixes #12731.
This commit is contained in:
Yu Watanabe 2019-06-06 00:42:05 +09:00
parent 9f08a578a8
commit 9ee92e7ed8

View File

@ -46,8 +46,10 @@ void routing_policy_rule_free(RoutingPolicyRule *rule) {
}
if (rule->manager) {
set_remove(rule->manager->rules, rule);
set_remove(rule->manager->rules_foreign, rule);
if (set_get(rule->manager->rules, rule) == rule)
set_remove(rule->manager->rules, rule);
if (set_get(rule->manager->rules_foreign, rule) == rule)
set_remove(rule->manager->rules_foreign, rule);
}
network_config_section_free(rule->section);