On Sat, Jan 10, 2015 at 07:26:38PM +0100, Álvaro Neira Ayuso wrote: > El 10/01/15 a las 19:20, Pablo Neira Ayuso escribió: > >On Fri, Jan 09, 2015 at 01:47:40PM +0100, Alvaro Neira Ayuso wrote: > >>Now, we create iterator without test if the list is empty. If the list > >>is empty, we have a crash when we set up the current element. > >>With this patch, we test if the list is empty before to create the iterator. If > >>the list is empty the iterator return NULL. > > > >Please, handle this from the _next() function. > > > >The idea is to set iter->cur to NULL if the list is empty from > >iter_create, ie. > > > > if (iter->r->expr_list.next == &iter->r.expr_list) > > iter->cur = NULL; > > else > > iter->cur = list_entry(...); > > > >Then, from _next() you check for: > > > > if (expr == NULL) > > return NULL; > > Ok, nice idea. > > > > >>Signed-off-by: Alvaro Neira Ayuso <alvaroneay@xxxxxxxxx> > >>--- > >> src/chain.c | 3 +++ > >> src/rule.c | 6 ++++++ > >> src/set.c | 3 +++ > >> src/set_elem.c | 3 +++ > >> src/table.c | 3 +++ > > > >I can count up to six iterator interfaces, I only see 5 here, please > >make sure you adapt all spots. Thanks. > > > > mmm yes and I have changed the code in the six iterator interfaces. > I have changed: Oh your right, sorry for the noise. -- To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html