Netlink attributes have a maximum length of 64k. It's theoretically possible that a packet could exceed this length, so check for it before we try to send the packet to userspace.
Signed-off-by: Jesse Gross <[email protected]> --- datapath/datapath.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) diff --git a/datapath/datapath.c b/datapath/datapath.c index 69b524c..ebfc2e9 100644 --- a/datapath/datapath.c +++ b/datapath/datapath.c @@ -492,6 +492,9 @@ static int queue_control_packets(struct datapath *dp, struct sk_buff *skb, if (unlikely(err)) goto err_kfree_skbs; + if (nla_attr_size(skb->len) > USHRT_MAX) + goto err_kfree_skbs; + len = sizeof(struct odp_header); len += nla_total_size(skb->len); len += nla_total_size(FLOW_BUFSIZE); -- 1.7.1 _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev_openvswitch.org
