From: Michal Kubeček Date: Thu, 13 Feb 2014 16:31:59 +0000 (+0100) Subject: iplink_bond: fix parameter value matching X-Git-Tag: v3.14.0~13 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f7a45e09555145378bdcdb5d074472ae716803ca;p=thirdparty%2Fiproute2.git iplink_bond: fix parameter value matching Lookup function get_index() compares argument with table entries only up to the length of the table entry so that if an entry with lower index is a substring of a later one, earlier entry is used even if the argument is equal to the other. For example, ip link set bond0 type bond xmit_hash_policy layer2+3 sets xmit_hash_policy to 0 (layer2) as this is found before "layer2+3" can be checked. Use strcmp() to compare whole strings instead. v2: look for an exact match only Signed-off-by: Michal Kubecek --- diff --git a/ip/iplink_bond.c b/ip/iplink_bond.c index f22151e2e..7a950df96 100644 --- a/ip/iplink_bond.c +++ b/ip/iplink_bond.c @@ -106,7 +106,7 @@ static int get_index(const char **tbl, char *name) return i; for (i = 0; tbl[i]; i++) - if (strncmp(tbl[i], name, strlen(tbl[i])) == 0) + if (strcmp(tbl[i], name) == 0) return i; return -1;