rem: if (maxport == 0 || maxport > 65535)
add: if (maxport <= 0 || maxport > 65535)
context: parse_to(char *arg, int portok, struct ipt_natinfo *info){	struct ip_nat_range range;	char *colon, *dash, *error;	struct in_addr *ip;	memset(&range, 0, sizeof(range));	colon = strchr(arg, ':');	if (colon) {		int port;		if (!portok)			exit_error(PARAMETER_PROBLEM,				   "Need TCP or UDP with port specification");		range.flags |= IP_NAT_RANGE_PROTO_SPECIFIED;		port = atoi(colon+1);		if (port == 0 || port > 65535)			exit_error(PARAMETER_PROBLEM,				   "Port `%s' not valid\n", colon+1);		error = strchr(colon+1, ':');		if (error)			exit_error(PARAMETER_PROBLEM,				   "Invalid port:port syntax - use dash\n");		dash = strchr(colon, '-');		if (!dash) {			range.min.tcp.port				= range.max.tcp.port				= htons(port);		} else {			int maxport;			maxport = atoi(dash + 1);			if (maxport == 0 || maxport > 65535)				exit_error(PARAMETER_PROBLEM,					   "Port `%s' not valid\n", dash+1);			if (maxport < port)				/* People are stupid. */				exit_error(PARAMETER_PROBLEM,					   "Port range `%s' funky\n", colon+1);			range.min.tcp.port = htons(port);			range.max.tcp.port = htons(maxport);		}		/* Starts with a colon? No IP info...*/		if (colon == arg)			return &(append_range(info, &range)->t);		*colon = '\0';	}	range.flags |= IP_NAT_RANGE_MAP_IPS;	dash = strchr(arg, '-');	if (colon && dash && dash > colon)		dash = NULL;	if (dash)		*dash = '\0';	ip = dotted_to_addr(arg);	if (!ip)		exit_error(PARAMETER_PROBLEM, "Bad IP address `%s'\n",			   arg);	range.min_ip = ip->s_addr;	if (dash) {		ip = dotted_to_addr(dash+1);		if (!ip)			exit_error(PARAMETER_PROBLEM, "Bad IP address `%s'\n",				   dash+1);		range.max_ip = ip->s_addr;	} else		range.max_ip = range.min_ip;	return &(append_range(info, &range)->t);}