Projet

Général

Profil

« Précédent | Suivant » 

Révision 9060f420

Ajouté par Renato Botelho il y a plus de 9 ans

Change is_port() to only validate a single port, we have is_portrange() for specific cases. Make necessary adjustments after check all is_port() calls. It fixes #3857

Voir les différences:

etc/inc/filter.inc
506 506
			else if(!isset($aliasnesting[$address]))
507 507
				$tmpline = filter_generate_nested_alias($name, $aliastable[$address], $aliasnesting, $aliasaddrnesting);
508 508
		} else if(!isset($aliasaddrnesting[$address])) {
509
			if (!is_ipaddr($address) && !is_subnet($address) && !is_port($address) && is_hostname($address)) {
509
			if (!is_ipaddr($address) && !is_subnet($address) && !is_port($address) && !is_portrange($address) && is_hostname($address)) {
510 510
				if (!isset($filterdns["{$address}{$name}"]))
511 511
					$filterdns["{$address}{$name}"] = "pf {$address} {$name}\n";
512 512
				continue;
etc/inc/util.inc
677 677

  
678 678
/* returns true if $port is a valid TCP/UDP port */
679 679
function is_port($port) {
680
	$tmpports = explode(":", $port);
681
	foreach($tmpports as $tmpport) {
682
		if (getservbyname($tmpport, "tcp") || getservbyname($tmpport, "udp"))
683
			continue;
684
		if (!ctype_digit($tmpport))
685
			return false;
686
		else if ((intval($tmpport) < 1) || (intval($tmpport) > 65535))
687
			return false;
688
	}
680
	if (getservbyname($port, "tcp") || getservbyname($port, "udp"))
681
		return true;
682
	if (!ctype_digit($port))
683
		return false;
684
	else if ((intval($port) < 1) || (intval($port) > 65535))
685
		return false;
689 686
	return true;
690 687
}
691 688

  
......
1255 1252

  
1256 1253
	if (isset($aliastable[$name]))
1257 1254
		return "\${$name}";
1258
	else if (is_ipaddr($name) || is_subnet($name) || is_port($name))
1255
	else if (is_ipaddr($name) || is_subnet($name) || is_port($name) || is_portrange($name))
1259 1256
		return "{$name}";
1260 1257
	else
1261 1258
		return null;
usr/local/www/firewall_aliases_edit.php
294 294
						      preg_match("/urltable/i", alias_get_type($_POST["address{$x}"]))))
295 295
							$wrongaliases .= " " . $_POST["address{$x}"];
296 296
				} else if ($_POST['type'] == "port") {
297
					if (!is_port($_POST["address{$x}"]))
297
					if (!is_port($_POST["address{$x}"]) && !is_portrange($_POST["address{$x}"]))
298 298
						$input_errors[] = $_POST["address{$x}"] . " " . gettext("is not a valid port or alias.");
299 299
				} else if ($_POST['type'] == "host" || $_POST['type'] == "network") {
300 300
					if (is_subnet($_POST["address{$x}"]) || (!is_ipaddr($_POST["address{$x}"])

Formats disponibles : Unified diff