]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
iproute: restrict hoplimit values to be in range [0; 255]
authorPhil Sutter <phil@nwl.cc>
Tue, 24 Nov 2015 14:45:31 +0000 (15:45 +0100)
committerStephen Hemminger <shemming@brocade.com>
Sun, 29 Nov 2015 19:47:29 +0000 (11:47 -0800)
Technically, the range of possible hoplimit values are defined by IPv4
and IPv6 header formats. Both define the field to be eight bits in size,
which leads to a value range of [0;255]. Setting a packet's hoplimit
field to 0 though makes not much sense, as the next hop would
immediately drop the packet. Therefore Linux uses 0 as a special value
indicating to use the system's default hoplimit (configurable via
sysctl). In iproute, setting the hoplimit of a route to 0 is equivalent
to omitting the hoplimit parameter alltogether, so it is actually not
necessary to allow that value to be specified, but keep it anyway for
backwards compatibility.

Signed-off-by: Phil Sutter <phil@nwl.cc>
ip/iproute.c

index c0ef7bfe7d3cc5550c89875b6a854dcba99178e5..aed1038e515b68f2309ea5a0f4c6c796d4a08312 100644 (file)
@@ -931,7 +931,7 @@ static int iproute_modify(int cmd, unsigned flags, int argc, char **argv)
                                mxlock |= (1<<RTAX_HOPLIMIT);
                                NEXT_ARG();
                        }
-                       if (get_unsigned(&hoplimit, *argv, 0))
+                       if (get_unsigned(&hoplimit, *argv, 0) || hoplimit > 255)
                                invarg("\"hoplimit\" value is invalid\n", *argv);
                        rta_addattr32(mxrta, sizeof(mxbuf), RTAX_HOPLIMIT, hoplimit);
                } else if (strcmp(*argv, "advmss") == 0) {