mirror of
https://github.com/systemd/systemd.git
synced 2024-12-26 03:22:00 +03:00
networkd: plug some memleaks in rule serialization/deserialization
This fixes the (mostly theoretical, since we're only parsing data that we write ourselves) memleak when iif or oif is deserialized multiple times. Unfortunately it does not fix the memleak when rule is freed, but that'll require a bigger effort.
This commit is contained in:
parent
9491f55f74
commit
93f9da6e0a
@ -1017,13 +1017,12 @@ int routing_policy_load_rules(const char *state_file, Set **rules) {
|
||||
}
|
||||
} else if (streq(a, "iif")) {
|
||||
|
||||
rule->iif = strdup(b);
|
||||
if (!rule->iif)
|
||||
if (free_and_strdup(&rule->iif, b) < 0)
|
||||
return log_oom();
|
||||
|
||||
} else if (streq(a, "oif")) {
|
||||
|
||||
rule->oif = strdup(b);
|
||||
if (!rule->oif)
|
||||
if (free_and_strdup(&rule->oif, b) < 0)
|
||||
return log_oom();
|
||||
}
|
||||
}
|
||||
|
@ -96,5 +96,9 @@ int main(int argc, char **argv) {
|
||||
test_rule_serialization("outgoing interface",
|
||||
"RULE=from=1::2/64 to=2::3/64 oif=eth0 table=1", NULL);
|
||||
|
||||
test_rule_serialization("freeing interface names",
|
||||
"RULE=from=1::2/64 to=2::3/64 iif=e0 iif=e1 oif=e0 oif=e1 table=1",
|
||||
"RULE=from=1::2/64 to=2::3/64 iif=e1 oif=e1 table=1");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user