diff options
| -rw-r--r-- | phpBB/composer.lock | 8 | ||||
| -rw-r--r-- | phpBB/includes/functions.php | 10 | ||||
| -rw-r--r-- | phpBB/includes/functions_upload.php | 2 | ||||
| -rw-r--r-- | phpBB/includes/message_parser.php | 9 | ||||
| -rw-r--r-- | tests/functional/posting_test.php | 28 | ||||
| -rw-r--r-- | tests/upload/filespec_test.php | 2 | 
6 files changed, 36 insertions, 23 deletions
| diff --git a/phpBB/composer.lock b/phpBB/composer.lock index fce3bbc801..872509884c 100644 --- a/phpBB/composer.lock +++ b/phpBB/composer.lock @@ -220,12 +220,12 @@              "source": {                  "type": "git",                  "url": "https://github.com/s9e/TextFormatter.git", -                "reference": "5b7d4c40bdef53f26ca6b09e85163f28e852f16b" +                "reference": "31fe627a4a82d41098a2db8036287c0693c79f13"              },              "dist": {                  "type": "zip", -                "url": "https://api.github.com/repos/s9e/TextFormatter/zipball/5b7d4c40bdef53f26ca6b09e85163f28e852f16b", -                "reference": "5b7d4c40bdef53f26ca6b09e85163f28e852f16b", +                "url": "https://api.github.com/repos/s9e/TextFormatter/zipball/31fe627a4a82d41098a2db8036287c0693c79f13", +                "reference": "31fe627a4a82d41098a2db8036287c0693c79f13",                  "shasum": ""              },              "require": { @@ -270,7 +270,7 @@                  "parser",                  "shortcodes"              ], -            "time": "2015-04-22 15:15:46" +            "time": "2015-04-25 20:58:33"          },          {              "name": "symfony/config", diff --git a/phpBB/includes/functions.php b/phpBB/includes/functions.php index 957b475616..3828fde1ce 100644 --- a/phpBB/includes/functions.php +++ b/phpBB/includes/functions.php @@ -1975,13 +1975,19 @@ function phpbb_request_http_version()  {  	global $request; +	$version = '';  	if ($request && $request->server('SERVER_PROTOCOL'))  	{ -		return $request->server('SERVER_PROTOCOL'); +		$version = $request->server('SERVER_PROTOCOL');  	}  	else if (isset($_SERVER['SERVER_PROTOCOL']))  	{ -		return $_SERVER['SERVER_PROTOCOL']; +		$version = $_SERVER['SERVER_PROTOCOL']; +	} + +	if (!empty($version) && is_string($version) && preg_match('#^HTTP/[0-9]\.[0-9]$#', $version)) +	{ +		return $version;  	}  	return 'HTTP/1.0'; diff --git a/phpBB/includes/functions_upload.php b/phpBB/includes/functions_upload.php index ac5313ca06..dcc9bc4874 100644 --- a/phpBB/includes/functions_upload.php +++ b/phpBB/includes/functions_upload.php @@ -219,6 +219,8 @@ class filespec  	*/  	static public function get_extension($filename)  	{ +		$filename = utf8_basename($filename); +  		if (strpos($filename, '.') === false)  		{  			return ''; diff --git a/phpBB/includes/message_parser.php b/phpBB/includes/message_parser.php index bc53336a3f..9fe598d7fb 100644 --- a/phpBB/includes/message_parser.php +++ b/phpBB/includes/message_parser.php @@ -1242,15 +1242,6 @@ class parse_message extends bbcode_firstpass  		// Parse this message  		$this->message = $parser->parse(htmlspecialchars_decode($this->message, ENT_QUOTES)); -		// Check for out-of-bounds characters that are currently -		// not supported by utf8_bin in MySQL -		if (preg_match_all('/[\x{10000}-\x{10FFFF}]/u', $this->message, $matches)) -		{ -			$character_list = implode('<br />', $matches[0]); -			$this->warn_msg[] = $user->lang('UNSUPPORTED_CHARACTERS_MESSAGE', $character_list); -			return $update_this_message ? $this->warn_msg : $return_message; -		} -  		// Check for "empty" message. We do not check here for maximum length, because bbcode, smilies, etc. can add to the length.  		// The maximum length check happened before any parsings.  		if ($mode === 'post' && utf8_clean_string($this->message) === '') diff --git a/tests/functional/posting_test.php b/tests/functional/posting_test.php index fd802eed45..7acf375c5d 100644 --- a/tests/functional/posting_test.php +++ b/tests/functional/posting_test.php @@ -45,18 +45,30 @@ class phpbb_functional_posting_test extends phpbb_functional_test_case  		self::create_post(2,  			1, -			'Unsupported characters', -			"This is a test with these weird characters: \xF0\x9F\x88\xB3 \xF0\x9F\x9A\xB6", -			array(), -			'Your message contains the following unsupported characters' -		); - -		self::create_post(2, -			1,  			"Unsupported: \xF0\x9F\x88\xB3 \xF0\x9F\x9A\xB6",  			'This is a test with emoji characters in the topic title.',  			array(),  			'Your subject contains the following unsupported characters'  		);  	} + +	public function test_supported_unicode_characters() +	{ +		$this->login(); + +		$post = $this->create_topic(2, 'Test Topic 1', 'This is a test topic posted by the testing framework.'); +		$this->create_post(2, $post['topic_id'], 'Re: Test Topic 1', "This is a test with these weird characters: \xF0\x9F\x88\xB3 \xF0\x9F\x9A\xB6"); +		$crawler = self::request('GET', "viewtopic.php?t={$post['topic_id']}&sid={$this->sid}"); +		$this->assertContains("\xF0\x9F\x88\xB3 \xF0\x9F\x9A\xB6", $crawler->text()); +	} + +	public function test_html_entities() +	{ +		$this->login(); + +		$post = $this->create_topic(2, 'Test Topic 1', 'This is a test topic posted by the testing framework.'); +		$this->create_post(2, $post['topic_id'], 'Re: Test Topic 1', '😀'); +		$crawler = self::request('GET', "viewtopic.php?t={$post['topic_id']}&sid={$this->sid}"); +		$this->assertContains('😀', $crawler->text()); +	}  } diff --git a/tests/upload/filespec_test.php b/tests/upload/filespec_test.php index f6deb242a2..f953970f64 100644 --- a/tests/upload/filespec_test.php +++ b/tests/upload/filespec_test.php @@ -216,6 +216,8 @@ class phpbb_filespec_test extends phpbb_test_case  			array('file.phpbb.gif', 'gif'),  			array('file..', ''),  			array('.file..jpg.webp', 'webp'), +			array('/test.com/file', ''), +			array('/test.com/file.gif', 'gif'),  		);  	} | 
