瀏覽代碼

net: fix nla_policy_len to actually _iterate_ over the policy

Currently nla_policy_len always returns n * NLA_HDRLEN:
It loops, but does not advance it's iterator.
NLA_UNSPEC == 0 does not contain a .len in any policy.

Trivially fixed by adding p++.

Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Lars Ellenberg 14 年之前
父節點
當前提交
e3fa3aff0c
共有 1 個文件被更改,包括 1 次插入1 次删除
  1. 1 1
      lib/nlattr.c

+ 1 - 1
lib/nlattr.c

@@ -148,7 +148,7 @@ nla_policy_len(const struct nla_policy *p, int n)
 {
 {
 	int i, len = 0;
 	int i, len = 0;
 
 
-	for (i = 0; i < n; i++) {
+	for (i = 0; i < n; i++, p++) {
 		if (p->len)
 		if (p->len)
 			len += nla_total_size(p->len);
 			len += nla_total_size(p->len);
 		else if (nla_attr_minlen[p->type])
 		else if (nla_attr_minlen[p->type])