rem: num = string_to_number(optarg, 0, nthinfo->every); if (num < 0)
add: if (string_to_number(optarg, 0, nthinfo->every, &num) == -1)
context: parse(int c, char **argv, int invert, unsigned int *flags,      const struct ipt_entry *entry,      unsigned int *nfcache,      struct ipt_entry_match **match){	struct ipt_nth_info *nthinfo = (struct ipt_nth_info *)(*match)->data;	int num;	switch (c) {	case '1':		/* check for common mistakes... */		if ((!invert) && (*flags & IPT_NTH_OPT_EVERY))			exit_error(PARAMETER_PROBLEM,				   "Can't specify --every twice");		if (invert && (*flags & IPT_NTH_OPT_NOT_EVERY))			exit_error(PARAMETER_PROBLEM,				   "Can't specify ! --every twice");		if ((!invert) && (*flags & IPT_NTH_OPT_NOT_EVERY))			exit_error(PARAMETER_PROBLEM,				   "Can't specify --every with ! --every");		if (invert && (*flags & IPT_NTH_OPT_EVERY))			exit_error(PARAMETER_PROBLEM,				   "Can't specify ! --every with --every");		/* Remember, this function will interpret a leading 0 to be 		   Octal, a leading 0x to be hexdecimal... */                num = string_to_number(optarg, 2, 100);                if (num < 2)                        exit_error(PARAMETER_PROBLEM,                                   "bad --every `%s', must be between 2 and 100", optarg);		/* assign the values */		nthinfo->every = num-1;		nthinfo->startat = 0;		if (invert)		{			*flags |= IPT_NTH_OPT_NOT_EVERY;			nthinfo->not = 1;		}		else		{			*flags |= IPT_NTH_OPT_EVERY;			nthinfo->not = 0;		}		break;	case '2':		/* check for common mistakes... */		if (!((*flags & IPT_NTH_OPT_EVERY) ||		      (*flags & IPT_NTH_OPT_NOT_EVERY)))			exit_error(PARAMETER_PROBLEM,				   "Can't specify --start before --every");		if (invert)			exit_error(PARAMETER_PROBLEM,				   "Can't specify with ! --start");		if (*flags & IPT_NTH_OPT_START)			exit_error(PARAMETER_PROBLEM,				   "Can't specify --start twice");		num = string_to_number(optarg, 0, nthinfo->every);                if (num < 0)                        exit_error(PARAMETER_PROBLEM,                                   "bad --start `%s', must between 0 and %u", optarg, nthinfo->every);		*flags |= IPT_NTH_OPT_START;		nthinfo->startat = num;		break;	default:		return 0;	}	return 1;}