diff options
| -rw-r--r-- | phpBB/includes/session.php | 11 | ||||
| -rw-r--r-- | phpBB/install/database_update.php | 1 | ||||
| -rw-r--r-- | phpBB/install/install_install.php | 1 | 
3 files changed, 13 insertions, 0 deletions
diff --git a/phpBB/includes/session.php b/phpBB/includes/session.php index e157053e61..2ee9365631 100644 --- a/phpBB/includes/session.php +++ b/phpBB/includes/session.php @@ -285,6 +285,17 @@ class session  				break;  			} +			// Quick check for IPv4-mapped address in IPv6 +			if (stripos($ip, '::ffff:') === 0) +			{ +				$ipv4 = substr($ip, 7); + +				if (preg_match(get_preg_expression('ipv4'), $ipv4)) +				{ +					$ip = $ipv4; +				} +			} +  			// Use the last in chain  			$this->ip = $ip;  		} diff --git a/phpBB/install/database_update.php b/phpBB/install/database_update.php index 83bbbf4577..4524dd20bf 100644 --- a/phpBB/install/database_update.php +++ b/phpBB/install/database_update.php @@ -119,6 +119,7 @@ $db->sql_connect($dbhost, $dbuser, $dbpasswd, $dbname, $dbport, false, false);  unset($dbpasswd);  $user->ip = (!empty($_SERVER['REMOTE_ADDR'])) ? htmlspecialchars($_SERVER['REMOTE_ADDR']) : ''; +$user->ip = (stripos($user->ip, '::ffff:') === 0) ? substr($user->ip, 7) : $user->ip;  $sql = "SELECT config_value  	FROM " . CONFIG_TABLE . " diff --git a/phpBB/install/install_install.php b/phpBB/install/install_install.php index 4c22db07b2..2800c26609 100644 --- a/phpBB/install/install_install.php +++ b/phpBB/install/install_install.php @@ -1236,6 +1236,7 @@ class install_install extends module  		$current_time = time();  		$user_ip = (!empty($_SERVER['REMOTE_ADDR'])) ? htmlspecialchars($_SERVER['REMOTE_ADDR']) : ''; +		$user_ip = (stripos($user_ip, '::ffff:') === 0) ? substr($user_ip, 7) : $user_ip;  		if ($data['script_path'] !== '/')  		{  | 
