iproute2/ip
Phil Sutter 625df645b7 Check user supplied interface name lengths
The original problem was that something like:

| strncpy(ifr.ifr_name, *argv, IFNAMSIZ);

might leave ifr.ifr_name unterminated if length of *argv exceeds
IFNAMSIZ. In order to fix this, I thought about replacing all those
cases with (equivalent) calls to snprintf() or even introducing
strlcpy(). But as Ulrich Drepper correctly pointed out when rejecting
the latter from being added to glibc, truncating a string without
notifying the user is not to be considered good practice. So let's
excercise what he suggested and reject empty, overlong or otherwise
invalid interface names right from the start - this way calls to
strncpy() like shown above become safe and the user has a chance to
reconsider what he was trying to do.

Note that this doesn't add calls to check_ifname() to all places where
user supplied interface name is parsed. In many cases, the interface
must exist already and is therefore looked up using ll_name_to_index(),
so if_nametoindex() will perform the necessary checks already.

Signed-off-by: Phil Sutter <phil@nwl.cc>
2017-10-02 08:01:21 -07:00
..
.gitignore Another .gitignore file. 2006-08-08 12:11:23 -07:00
ifcfg ifcfg: Quote left-hand side of [ ] expression 2017-08-18 09:11:00 -07:00
ip6tunnel.c Check user supplied interface name lengths 2017-10-02 08:01:21 -07:00
ip_common.h json: move json printer to common library 2017-09-22 10:06:43 -07:00
ip.c ip: add new command line argument -json (mutually exclusive with -color) 2017-08-17 18:02:40 -07:00
ipaddress.c lib: json_print: rework 'new_json_obj' drop FILE* argument 2017-09-29 10:10:47 -07:00
ipaddrlabel.c Use C99 style initializers everywhere 2016-07-20 12:05:24 -07:00
ipfou.c fou: show usage even if the module is not available 2016-08-17 14:00:22 -07:00
ipila.c ila: show usage even if the module is not available 2016-08-17 14:00:28 -07:00
ipl2tp.c Check user supplied interface name lengths 2017-10-02 08:01:21 -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_bond.c ip: iplink_bond.c: add json output support 2017-08-17 18:02:40 -07:00
iplink_bridge_slave.c ip: iplink_bridge_slave.c: add json output support 2017-08-17 18:02:41 -07:00
iplink_bridge.c ip: iplink_bridge.c: add json output support 2017-08-17 18:02:40 -07:00
iplink_can.c Merge branch 'master' into net-next 2017-08-21 17:37:15 -07:00
iplink_dummy.c ip: link: Add missing link type help texts 2017-04-04 14:51:29 -07:00
iplink_geneve.c ip: iplink_geneve.c: add json output support 2017-08-17 18:02:41 -07:00
iplink_hsr.c ip: iplink_hsr.c: add json output support 2017-08-17 18:02:40 -07:00
iplink_ifb.c ip: link: Add missing link type help texts 2017-04-04 14:51:29 -07:00
iplink_ipoib.c ip: iplink_ipoib.c: add json output support 2017-08-17 18:02:41 -07:00
iplink_ipvlan.c ip: iplink_ipvlan.c: add json output support 2017-08-17 18:02:41 -07:00
iplink_macvlan.c ip: link_macvlan.c: add json output support 2017-08-17 18:02:41 -07:00
iplink_nlmon.c ip: link: Add missing link type help texts 2017-04-04 14:51:29 -07:00
iplink_team.c ip: link: Add missing link type help texts 2017-04-04 14:51:29 -07:00
iplink_vcan.c ip: link: Add missing link type help texts 2017-04-04 14:51:29 -07:00
iplink_vlan.c ip: iplink_vlan.c: add json output support 2017-08-17 18:02:41 -07:00
iplink_vrf.c Merge branch 'master' into net-next 2017-08-21 17:37:15 -07:00
iplink_vxcan.c ip: link add vxcan support 2017-06-05 12:27:32 -07:00
iplink_vxlan.c ip: iplink_vxlan.c: add json output support 2017-08-17 18:02:41 -07:00
iplink_xdp.c bpf: properly output json for xdp 2017-09-22 10:07:15 -07:00
iplink_xstats.c add missing iplink_xstats.c 2017-02-20 08:53:40 -08:00
iplink.c Check user supplied interface name lengths 2017-10-02 08:01:21 -07:00
ipmacsec.c ip: ipmacsec.c: add json output support 2017-08-17 18:02:41 -07:00
ipmaddr.c Check user supplied interface name lengths 2017-10-02 08:01:21 -07:00
ipmonitor.c ip: Add support for MPLS netconf 2017-02-23 08:58:40 -08:00
ipmroute.c ip: mroute: Add table output to show command 2017-06-15 08:29:30 -07:00
ipneigh.c ip neigh: allow flush FAILED neighbour entry 2017-06-16 09:01:02 -07:00
ipnetconf.c ip netconf: show all families on dev request 2017-04-14 16:00:15 -07:00
ipnetns.c Convert the obvious cases to strlcpy() 2017-09-01 12:10:54 -07:00
ipntable.c ipntable: Avoid memory allocation for filter.name 2017-08-24 14:53:14 -07:00
ipprefix.c netlink route attribute cleanup 2017-02-24 08:56:38 -08:00
iproute_lwtunnel.c Merge branch 'master' into net-next 2017-09-01 12:17:48 -07:00
iproute_lwtunnel.h lwtunnel: Add encapsulation support to ip route 2015-10-16 16:13:22 -07:00
iproute.c ip-route: Fix for listing routes with RTAX_LOCK attribute 2017-09-29 12:02:09 -07:00
iprule.c Check user supplied interface name lengths 2017-10-02 08:01:21 -07:00
ipseg6.c ip: add ip sr command to control SR-IPv6 internal structures 2017-04-16 10:21:43 -07:00
iptoken.c Use C99 style initializers everywhere 2016-07-20 12:05:24 -07:00
iptunnel.c Check user supplied interface name lengths 2017-10-02 08:01:21 -07:00
iptuntap.c Check user supplied interface name lengths 2017-10-02 08:01:21 -07:00
ipvrf.c Convert harmful calls to strncpy() to strlcpy() 2017-09-01 12:10:54 -07:00
ipxfrm.c ipxfrm: Replace STRBUF_CAT macro with strlcat() 2017-09-01 12:10:54 -07:00
link_gre6.c Merge branch 'master' into net-next 2017-09-01 12:17:48 -07:00
link_gre.c gre: add support for ERSPAN tunnel 2017-08-23 10:06:54 -07:00
link_ip6tnl.c ip: link_ip6tnl.c: add json output support 2017-08-17 18:02:41 -07:00
link_iptnl.c ip: link_iptnl.c: add json output support 2017-08-17 18:02:41 -07:00
link_veth.c ip: code cleanup 2016-03-21 11:52:19 -07:00
link_vti6.c ip: link_vti6.c: add json output support 2017-08-17 18:02:41 -07:00
link_vti.c ip: link_vti.c: add json output support 2017-08-17 18:02:41 -07:00
Makefile json: move json printer to common library 2017-09-22 10:06:43 -07:00
routef ip/routef lifesaver 2007-07-10 18:29:20 -07:00
routel routel: fix infinite loop in line parser 2017-04-27 16:42:29 -07:00
rtm_map.c ip, realms: also allow to pass in raw realms value 2015-10-22 23:40:51 -07:00
rtmon.c ip: code cleanup 2016-03-21 11:52:19 -07:00
rtpr (Logical change 1.3) 2004-04-15 20:56:59 +00:00
static-syms.c Fix build when shared libraries are disabled 2013-03-13 08:29:59 -07:00
tcp_metrics.c libgenl: introduce genl_init_handle 2016-08-17 13:59:21 -07:00
tunnel.c iptunnel: add support for mpls/ip to sit tunnels 2017-07-05 09:04:59 -07:00
tunnel.h ip{,6}tunnel: have a shared stats parser/printer 2015-12-18 11:46:21 -08:00
xdp.h bpf: consolidate dumps to use bpf_dump_prog_info 2017-09-05 09:26:34 -07:00
xfrm_monitor.c netlink route attribute cleanup 2017-02-24 08:56:38 -08:00
xfrm_policy.c netlink route attribute cleanup 2017-02-24 08:56:38 -08:00
xfrm_state.c ip xfrm: use correct key length for netlink message 2017-10-01 13:44:38 -07:00
xfrm.h xfrm: get #define's from linux includes 2017-06-14 10:25:39 -07:00