Error: FORWARD_NULL ebtables-v2.0.9-2/communication.c:305: var_compare_op: Comparing "next" to null implies that "next" might be null. ebtables-v2.0.9-2/communication.c:316: var_deref_op: Dereferencing null variable "next". Error: FORWARD_NULL ebtables-v2.0.9-2/communication.c:632: assign_zero: Assigning: "repl->counters" = 0. ebtables-v2.0.9-2/communication.c:634: var_deref_model: Passing null variable "(char *)repl->counters" to function "fread", which dereferences it. diff -up ebtables-v2.0.9-2/communication.c.forward_null ebtables-v2.0.9-2/communication.c --- ebtables-v2.0.9-2/communication.c.forward_null 2010-02-03 22:17:45.000000000 +0100 +++ ebtables-v2.0.9-2/communication.c 2011-06-01 18:20:52.844295103 +0200 @@ -309,6 +309,8 @@ void ebt_deliver_counters(struct ebt_u_r if (chainnr == u_repl->num_chains) break; } + if (next == NULL) + ebt_print_error("ebt_deliver_counters: next == NULL"); if (cc->type == CNT_NORM) { /* 'Normal' rule, meaning we didn't do anything to it * So, we just copy */ @@ -636,9 +638,9 @@ static int retrieve_from_file(char *file != repl->entries_size || fseek(file, sizeof(struct ebt_replace) + repl->entries_size, SEEK_SET) - || fread((char *)repl->counters, sizeof(char), + || (repr->counters && fread((char *)repl->counters, sizeof(char), repl->nentries * sizeof(struct ebt_counter), file) - != repl->nentries * sizeof(struct ebt_counter)) { + != repl->nentries * sizeof(struct ebt_counter))) { ebt_print_error("File %s is corrupt", filename); free(entries); repl->entries = NULL;