The netdev->priv is shared for the netdev types. A bad config file
could mix configuration for different types, resulting in a bad
netdev->priv when starting or even destroying a container. So sanity
check the netdev->type before setting a netdev->priv element.
This should fix https://github.com/lxc/lxc/issues/254
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
if (!netdev)
return -1;
+ if (netdev->type != LXC_NET_VETH) {
+ ERROR("Invalid veth pair for a non-veth netdev")
+ return -1;
+ }
return network_ifname(&netdev->priv.veth_attr.pair, value);
}
if (!netdev)
return -1;
+ if (netdev->type != LXC_NET_MACVLAN) {
+ ERROR("Invalid macvlan.mode for a non-macvlan netdev")
+ return -1;
+ }
return macvlan_mode(&netdev->priv.macvlan_attr.mode, value);
}
if (!netdev)
return -1;
+ if (netdev->type != LXC_NET_VLAN) {
+ ERROR("Invalid vlan.id for a non-macvlan netdev")
+ return -1;
+ }
if (get_u16(&netdev->priv.vlan_attr.vid, value, 0))
return -1;