net: ovs: flow: fix potential illegal memory access in __parse_flow_nlattrs
authorDaniel Borkmann <dborkman@redhat.com>
Sat, 7 Sep 2013 07:41:34 +0000 (09:41 +0200)
committerDavid S. Miller <davem@davemloft.net>
Wed, 11 Sep 2013 20:09:58 +0000 (16:09 -0400)
commit3bf4b5b11d381fed6a94a7e487e01c8b3bc436b9
treeafafcea11e352e1a6c17c46d6d0981ee5345e92c
parentdf9f1b9f3308125fb7c9b484852b5d6a18b2bc02
net: ovs: flow: fix potential illegal memory access in __parse_flow_nlattrs

In function __parse_flow_nlattrs(), we check for condition
(type > OVS_KEY_ATTR_MAX) and if true, print an error, but we do
not return from this function as in other checks. It seems this
has been forgotten, as otherwise, we could access beyond the
memory of ovs_key_lens, which is of ovs_key_lens[OVS_KEY_ATTR_MAX + 1].
Hence, a maliciously prepared nla_type from user space could access
beyond this upper limit.

Introduced by 03f0d916a ("openvswitch: Mega flow implementation").

Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
Cc: Andy Zhou <azhou@nicira.com>
Acked-by: Jesse Gross <jesse@nicira.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/openvswitch/flow.c