Commit aeec2a0c authored by Hans Dedecker's avatar Hans Dedecker

iprule: fix segfault (FS#1875)

Fix segfault in generic_interface_cb by checking the
IPRULE_OUT/IPRULE_IN flags before doing the strcmp for the possible
configured out/in interface(s) of the ip rule.
Also don't copy the interface layer3 device as the layer 3 device is
not yet known when IFEV_CREATE event is launched.
The layer3 device will be known when the IFEV_UP event is processed in
rule_out_cb/rule_in_cb.
Signed-off-by: default avatarHans Dedecker <dedeckeh@gmail.com>
parent 94e156f9
......@@ -180,15 +180,11 @@ static void generic_interface_cb(
if (rule_ready(rule))
continue;
if (!strcmp(rule->out_iface, iface->name)) {
memcpy(rule->out_dev, iface->l3_dev.dev->ifname, sizeof(rule->out_dev));
if ((rule->flags & IPRULE_OUT) && !strcmp(rule->out_iface, iface->name))
interface_add_user(&rule->out_iface_user, iface);
}
if (!strcmp(rule->in_iface, iface->name)) {
memcpy(rule->in_dev, iface->l3_dev.dev->ifname, sizeof(rule->in_dev));
if ((rule->flags & IPRULE_IN) && !strcmp(rule->in_iface, iface->name))
interface_add_user(&rule->in_iface_user, iface);
}
}
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment