From f7a45e09555145378bdcdb5d074472ae716803ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kube=C4=8Dek?= Date: Thu, 13 Feb 2014 17:31:59 +0100 Subject: [PATCH] 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 --- ip/iplink_bond.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ip/iplink_bond.c b/ip/iplink_bond.c index f22151e2..7a950df9 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;