summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJozsef Kadlecsik <kadlec@blackhole.kfki.hu>2013-09-23 21:28:06 +0200
committerJozsef Kadlecsik <kadlec@blackhole.kfki.hu>2013-09-23 21:28:06 +0200
commit6a4ec96c0b8caac5c35474e40e319704d92ca347 (patch)
tree60afb35eb751df7a3a3e44c66daf12691c88bb7a
parent2368c6275981b2c3c758212ea86ce72269a3a716 (diff)
For set:list types, replaced elements must be zeroed out
The new extensions require zero initialization for the new element to be added into a slot from where another element was pushed away.
-rw-r--r--kernel/net/netfilter/ipset/ip_set_list_set.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/kernel/net/netfilter/ipset/ip_set_list_set.c b/kernel/net/netfilter/ipset/ip_set_list_set.c
index f9681dc..e23f33c 100644
--- a/kernel/net/netfilter/ipset/ip_set_list_set.c
+++ b/kernel/net/netfilter/ipset/ip_set_list_set.c
@@ -184,6 +184,8 @@ list_set_add(struct ip_set *set, u32 i, struct set_adt_elem *d,
}
memmove(list_set_elem(set, map, i + 1), e,
set->dsize * (map->size - (i + 1)));
+ /* Extensions must be initialized to zero */
+ memset(e, 0, set->dsize);
}
}
@@ -192,7 +194,7 @@ list_set_add(struct ip_set *set, u32 i, struct set_adt_elem *d,
ip_set_timeout_set(ext_timeout(e, set), ext->timeout);
if (SET_WITH_COUNTER(set))
ip_set_init_counter(ext_counter(e, set), ext);
- if (SET_WITH_COMMENT(set) && ext->comment)
+ if (SET_WITH_COMMENT(set))
ip_set_init_comment(ext_comment(e, set), ext);
return 0;
}