From: Andrea Claudi Date: Mon, 22 Feb 2021 20:23:01 +0000 (+0100) Subject: ip: lwtunnel: seg6: bail out if table ids are invalid X-Git-Tag: v5.11.0~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e833dbe140c529ab0b50eaa01ef37cb7b1c00e22;p=thirdparty%2Fiproute2.git ip: lwtunnel: seg6: bail out if table ids are invalid When table and vrftable are used in SRv6, ip should bail out if table ids are not valid, and return a proper error message to the user. Achieve this simply checking rtnl_rttable_a2n return value, as we already do in the rest of iproute. Fixes: 0486388a877a ("add support for table name in SRv6 End.DT* behaviors") Fixes: 69629b4e43c4 ("seg6: add support for vrftable attribute in SRv6 End.DT4/DT6 behaviors") Signed-off-by: Andrea Claudi Signed-off-by: Stephen Hemminger --- diff --git a/ip/iproute_lwtunnel.c b/ip/iproute_lwtunnel.c index 1ab95cd2e..566fc7ea3 100644 --- a/ip/iproute_lwtunnel.c +++ b/ip/iproute_lwtunnel.c @@ -891,13 +891,15 @@ static int parse_encap_seg6local(struct rtattr *rta, size_t len, int *argcp, NEXT_ARG(); if (table_ok++) duparg2("table", *argv); - rtnl_rttable_a2n(&table, *argv); + if (rtnl_rttable_a2n(&table, *argv)) + invarg("invalid table id\n", *argv); ret = rta_addattr32(rta, len, SEG6_LOCAL_TABLE, table); } else if (strcmp(*argv, "vrftable") == 0) { NEXT_ARG(); if (vrftable_ok++) duparg2("vrftable", *argv); - rtnl_rttable_a2n(&vrftable, *argv); + if (rtnl_rttable_a2n(&vrftable, *argv)) + invarg("invalid vrf table id\n", *argv); ret = rta_addattr32(rta, len, SEG6_LOCAL_VRFTABLE, vrftable); } else if (strcmp(*argv, "nh4") == 0) {