From 1395c69901834f66e1e1522d5253a84b45901066 Mon Sep 17 00:00:00 2001 From: Thomas Graf Date: Wed, 13 Mar 2013 17:12:03 +0100 Subject: [PATCH] attr: Warn application if nla_parse() observes same attribute multiple times Use a debugging message to warn applications if an attribute is found multiple times in the same message. It is perfectly valid to rely on this behaviour but it is likely to indicate a bug. Signed-off-by: Thomas Graf --- lib/attr.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/lib/attr.c b/lib/attr.c index 093ffb5..e6efe4e 100644 --- a/lib/attr.c +++ b/lib/attr.c @@ -254,15 +254,20 @@ int nla_parse(struct nlattr *tb[], int maxtype, struct nlattr *head, int len, if (type == 0) continue; - if (type <= maxtype) { - if (policy) { - err = validate_nla(nla, maxtype, policy); - if (err < 0) - goto errout; - } + if (type > maxtype) + continue; - tb[type] = nla; + if (policy) { + err = validate_nla(nla, maxtype, policy); + if (err < 0) + goto errout; } + + if (tb[type]) + NL_DBG(1, "Attribute of type %#x found multiple times in message, " + "previous attribute is being ignored.\n", type); + + tb[type] = nla; } if (rem > 0)