iproute2/ip
Phil Sutter bd59e5b151 ip-route: Fix segfault with many nexthops
It was possible to crash ip-route by adding an IPv6 route with 37
nexthop statements. A simple reproducer is:

| for i in `seq 37`; do
| 	nhs="nexthop via 1111::$i "$nhs
| done
| ip -6 route add 3333::/64 $nhs

The related code was broken in multiple ways:

* parse_one_nh() assumed that rta points to 4kB of storage but caller
  provided just 1kB. Fixed by passing 'len' parameter with the correct
  value.

* Error checking of rta_addattr*() calls in parse_one_nh() and called
  functions was completely absent, so with above fix in place output
  flood would occur due to parser looping forever.

While being at it, increase message buffer sizes to 4k. This allows for
at most 144 nexthops.

Signed-off-by: Phil Sutter <phil@nwl.cc>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
2018-09-10 12:14:50 -07:00
..
.gitignore Another .gitignore file. 2006-08-08 12:11:23 -07:00
Makefile ip: add rmnet initial support 2018-06-15 11:15:14 -07:00
ifcfg ifcfg/rtpr: convert to POSIX shell 2018-01-10 08:26:09 -08:00
ila_common.h SPDX license identifiers 2017-11-24 12:21:35 -08:00
ip.c Make colored output configurable 2018-08-20 08:54:06 -07:00
ip6tunnel.c utils: Introduce and use nodev() helper routine 2018-03-11 17:58:36 -07:00
ip_common.h ip: drop extern from function prototype 2018-08-20 15:58:50 -07:00
ipaddress.c Merge branch 'iproute2-master' into iproute2-next 2018-08-13 07:47:21 -07:00
ipaddrlabel.c ipaddrlabel: add json support 2018-03-06 15:38:41 -08:00
ipfou.c fou: support JSON output 2018-03-06 15:39:34 -08:00
ipila.c ip/ila: support json and color 2018-03-28 20:36:58 -07:00
ipl2tp.c l2tp: drop lns_mode 2018-08-12 14:05:11 -07:00
iplink.c ip: add rmnet initial support 2018-06-15 11:15:14 -07:00
iplink_bond.c utils: Introduce and use nodev() helper routine 2018-03-11 17:58:36 -07:00
iplink_bond_slave.c ip: iplink_bond_slave.c: add json output support (info_slave_data) 2017-08-17 18:02:40 -07:00
iplink_bridge.c utils: Introduce and use nodev() helper routine 2018-03-11 17:58:36 -07:00
iplink_bridge_slave.c bridge: add support for isolated option 2018-07-06 07:58:41 -07:00
iplink_can.c iproute: make clang happy 2018-08-30 07:58:09 -07:00
iplink_dummy.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
iplink_geneve.c iplink_geneve: correct size of message to avoid spurious errors 2018-04-20 10:39:53 -07:00
iplink_hsr.c ip: iplink_hsr.c: add json output support 2017-08-17 18:02:40 -07:00
iplink_ifb.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
iplink_ipoib.c ip: iplink_ipoib.c: add json output support 2017-08-17 18:02:41 -07:00
iplink_ipvlan.c ip/ipvlan: enhance ability to add mode flags to existing modes 2017-11-01 22:17:01 +01:00
iplink_macvlan.c ip: link_macvlan.c: add json output support 2017-08-17 18:02:41 -07:00
iplink_netdevsim.c ip: link: add support for netdevsim device type 2018-01-02 20:46:19 -08:00
iplink_nlmon.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
iplink_rmnet.c ip: add rmnet initial support 2018-06-15 11:15:14 -07:00
iplink_team.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
iplink_vcan.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
iplink_vlan.c treewide: Use addattr_nest()/addattr_nest_end() to handle nested attributes 2018-02-02 15:01:09 -08:00
iplink_vrf.c iplink_vrf: Save device index from response for return code 2018-06-01 15:45:09 -04:00
iplink_vxcan.c iplink: Perform most of request buffer setups and checks in iplink_parse() 2018-03-11 17:59:03 -07:00
iplink_vxlan.c vxlan: add ttl auto in help message 2018-04-23 19:43:46 -07:00
iplink_xdp.c iplink: add support for reporting multiple XDP programs 2018-07-15 13:10:03 -07:00
iplink_xstats.c add missing iplink_xstats.c 2017-02-20 08:53:40 -08:00
ipmacsec.c json_print: Fix hidden 64-bit type promotion 2018-04-25 11:08:55 -07:00
ipmaddr.c ipmaddr: use preferred_family when given 2018-08-30 07:57:11 -07:00
ipmonitor.c ipmonitor: decode DELNETCONF message 2018-08-16 09:50:34 -07:00
ipmroute.c json_print: Fix hidden 64-bit type promotion 2018-04-25 11:08:55 -07:00
ipneigh.c ipneigh: exclude NTF_EXT_LEARNED from default filter 2018-07-17 18:57:21 -07:00
ipnetconf.c ipmonitor: decode DELNETCONF message 2018-08-16 09:50:34 -07:00
ipnetns.c iplink: enable to specify a name for the link-netns 2018-06-08 10:06:21 -07:00
ipntable.c json_print: Fix hidden 64-bit type promotion 2018-04-25 11:08:55 -07:00
ipprefix.c netlink route attribute cleanup 2017-02-24 08:56:38 -08:00
iproute.c ip-route: Fix segfault with many nexthops 2018-09-10 12:14:50 -07:00
iproute_lwtunnel.c ip-route: Fix segfault with many nexthops 2018-09-10 12:14:50 -07:00
iprule.c iprule: Fix destination prefix output 2018-08-30 07:51:00 -07:00
ipseg6.c ipsr: add json support 2018-03-06 15:39:14 -08:00
iptoken.c token: support JSON 2018-03-06 15:39:19 -08:00
iptunnel.c utils: Introduce and use nodev() helper routine 2018-03-11 17:58:36 -07:00
iptuntap.c json_print: Fix hidden 64-bit type promotion 2018-04-25 11:08:55 -07:00
ipvrf.c Drop capabilities if not running ip exec vrf with libcap 2018-03-27 11:48:23 -07:00
ipxfrm.c ip-xfrm: Add support for OUTPUT_MARK 2018-06-18 06:37:00 -07:00
link_gre.c gre/gre6: allow clearing {,i,o}{key,seq,csum} flags 2018-04-23 19:42:58 -07:00
link_gre6.c gre/gre6: allow clearing {,i,o}{key,seq,csum} flags 2018-04-23 19:42:58 -07:00
link_ip6tnl.c utils: Introduce and use nodev() helper routine 2018-03-11 17:58:36 -07:00
link_iptnl.c utils: Introduce and use nodev() helper routine 2018-03-11 17:58:36 -07:00
link_veth.c iplink: Perform most of request buffer setups and checks in iplink_parse() 2018-03-11 17:59:03 -07:00
link_vti.c utils: Introduce and use nodev() helper routine 2018-03-11 17:58:36 -07:00
link_vti6.c utils: Introduce and use nodev() helper routine 2018-03-11 17:58:36 -07:00
routef mark shell scripts +x 2018-01-10 08:23:49 -08:00
routel mark shell scripts +x 2018-01-10 08:23:49 -08:00
rtm_map.c drop unneeded include of syslog.h 2017-11-12 16:22:36 -08:00
rtmon.c rtmon: List options in help text 2018-08-16 10:25:02 -07:00
rtpr ifcfg/rtpr: convert to POSIX shell 2018-01-10 08:26:09 -08:00
static-syms.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
tcp_metrics.c json_print: Fix hidden 64-bit type promotion 2018-04-25 11:08:55 -07:00
tunnel.c Merge branch 'iproute2-master' into iproute2-next 2018-04-02 10:47:34 -07:00
tunnel.h iptunnel/ip6tunnel: Use netlink to walk through tunnels list 2018-02-07 16:15:42 -08:00
xfrm.h ip: Fix compilation break on old systems 2017-11-13 10:07:25 -08:00
xfrm_monitor.c iproute2: fix 'ip xfrm monitor all' command 2018-06-01 15:57:26 -04:00
xfrm_policy.c Merge branch 'master' into net-next 2017-11-09 09:45:17 +09:00
xfrm_state.c ip-xfrm: Add support for OUTPUT_MARK 2018-06-18 06:37:00 -07:00