Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 02f815cb authored by Jozsef Kadlecsik's avatar Jozsef Kadlecsik Committed by Pablo Neira Ayuso
Browse files

netfilter: ipset: list:set: fix reference counter update



The last element can be replaced or pushed off and in both
cases the reference counter must be updated.

Signed-off-by: default avatarJozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
parent 3a7b21ea
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -174,9 +174,13 @@ list_set_add(struct list_set *map, u32 i, ip_set_id_t id,
{
	const struct set_elem *e = list_set_elem(map, i);

	if (i == map->size - 1 && e->id != IPSET_INVALID_ID)
		/* Last element replaced: e.g. add new,before,last */
		ip_set_put_byindex(e->id);
	if (e->id != IPSET_INVALID_ID) {
		const struct set_elem *x = list_set_elem(map, map->size - 1);

		/* Last element replaced or pushed off */
		if (x->id != IPSET_INVALID_ID)
			ip_set_put_byindex(x->id);
	}
	if (with_timeout(map->timeout))
		list_elem_tadd(map, i, id, ip_set_timeout_set(timeout));
	else