networkd: fix memleak of Rules

This was the issue mentioned in 93f9da6e0a.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2017-11-28 13:02:33 +01:00
parent f916819053
commit b921fcb2ac
2 changed files with 4 additions and 6 deletions

View file

@ -1223,7 +1223,6 @@ int manager_new(Manager **ret, sd_event *event) {
}
void manager_free(Manager *m) {
RoutingPolicyRule *rule;
Network *network;
NetDev *netdev;
Link *link;
@ -1253,10 +1252,7 @@ void manager_free(Manager *m) {
set_free(m->rules);
set_free(m->rules_foreign);
while ((rule = set_steal_first(m->rules_saved)))
free(rule);
set_free(m->rules_saved);
set_free_with_destructor(m->rules_saved, routing_policy_rule_free);
sd_netlink_unref(m->rtnl);
sd_event_unref(m->event);

View file

@ -34,7 +34,7 @@ static void test_rule_serialization(const char *title, const char *ruleset, cons
const char *cmd;
int fd, fd2, fd3;
_cleanup_fclose_ FILE *f = NULL, *f2 = NULL, *f3 = NULL;
_cleanup_set_free_free_ Set *rules = NULL;
Set *rules = NULL;
_cleanup_free_ char *buf = NULL;
size_t buf_size;
@ -64,6 +64,8 @@ static void test_rule_serialization(const char *title, const char *ruleset, cons
cmd = strjoina("diff -u ", pattern3, " ", pattern2);
log_info("$ %s", cmd);
assert_se(system(cmd) == 0);
set_free_with_destructor(rules, routing_policy_rule_free);
}
int main(int argc, char **argv) {