--- ../iptables/ip6tables-restore.c.orig 2008-03-10 14:20:19.000000000 +0100 +++ ../iptables/ip6tables-restore.c 2008-03-10 14:25:44.000000000 +0100 @@ -29,14 +29,14 @@ /* Keeping track of external matches and targets. */ static struct option options[] = { - { "binary", 0, 0, 'b' }, - { "counters", 0, 0, 'c' }, - { "verbose", 0, 0, 'v' }, - { "test", 0, 0, 't' }, - { "help", 0, 0, 'h' }, - { "noflush", 0, 0, 'n'}, - { "modprobe", 1, 0, 'M'}, - { 0 } + { .name = "binary", .has_arg = 0, .flag = 0, .val = 'b' }, + { .name = "counters", .has_arg = 0, .flag = 0, .val = 'c' }, + { .name = "verbose", .has_arg = 0, .flag = 0, .val = 'v' }, + { .name = "test", .has_arg = 0, .flag = 0, .val = 't' }, + { .name = "help", .has_arg = 0, .flag = 0, .val = 'h' }, + { .name = "noflush", .has_arg = 0, .flag = 0, .val = 'n'}, + { .name = "modprobe", .has_arg = 1, .flag = 0, .val = 'M'}, + { .name = NULL } }; static void print_usage(const char *name, const char *version) __attribute__((noreturn)); @@ -96,7 +96,7 @@ * returns true if argument added, false otherwise */ static int add_argv(char *what) { DEBUGP("add_argv: %s\n", what); - if (what && ((newargc + 1) < sizeof(newargv)/sizeof(char *))) { + if (what && (((unsigned int)(newargc + 1)) < sizeof(newargv)/sizeof(char *))) { newargv[newargc] = strdup(what); newargc++; return 1;