flow_dissector: Add limit for number of headers to dissect
authorTom Herbert <tom@quantonium.net>
Fri, 1 Sep 2017 21:04:12 +0000 (14:04 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 5 Sep 2017 18:40:08 +0000 (11:40 -0700)
commit1eed4dfb81b193af3299edeed2827337f9999e78
tree47563e759a4e046e163078c1898949814416c1cf
parent3a1214e8b06317b4e71cd3a36344df87b7858e19
flow_dissector: Add limit for number of headers to dissect

In flow dissector there are no limits to the number of nested
encapsulations or headers that might be dissected which makes for a
nice DOS attack. This patch sets a limit of the number of headers
that flow dissector will parse.

Headers includes network layer headers, transport layer headers, shim
headers for encapsulation, IPv6 extension headers, etc. The limit for
maximum number of headers to parse has be set to fifteen to account for
a reasonable number of encapsulations, extension headers, VLAN,
in a packet. Note that this limit does not supercede the STOP_AT_*
flags which may stop processing before the headers limit is reached.

Reported-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Signed-off-by: Tom Herbert <tom@quantonium.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/flow_dissector.c