diff --git src/wp-admin/includes/file.php src/wp-admin/includes/file.php
index da215b7a14..8f26ba685c 100644
|
|
|
function _wp_handle_upload( &$file, $overrides, $time, $action ) { |
| 824 | 824 | return call_user_func_array( $upload_error_handler, array( &$file, $uploads['error'] ) ); |
| 825 | 825 | } |
| 826 | 826 | |
| 827 | | $filename = wp_unique_filename( $uploads['path'], $file['name'], $unique_filename_callback ); |
| | 827 | $tmp_file_name = $file['name']; |
| | 828 | $ext = pathinfo( $tmp_file_name, PATHINFO_EXTENSION ); |
| | 829 | $name = wp_basename( $tmp_file_name, ".$ext" ); |
| | 830 | |
| | 831 | // Change file name to be hashed if it contains multi-byte chars. |
| | 832 | if ( ! is_ascii_text( $name ) ) { |
| | 833 | $tmp_file_name = md5( $name ) . ".$ext"; |
| | 834 | } |
| | 835 | |
| | 836 | $filename = wp_unique_filename( $uploads['path'], $tmp_file_name, $unique_filename_callback ); |
| 828 | 837 | |
| 829 | 838 | // Move the file to the uploads dir. |
| 830 | 839 | $new_file = $uploads['path'] . "/$filename"; |
diff --git src/wp-includes/formatting.php src/wp-includes/formatting.php
index bf03e78e1e..53cba60dfa 100644
|
|
|
function sanitize_text_field( $str ) { |
| 5057 | 5057 | return apply_filters( 'sanitize_text_field', $filtered, $str ); |
| 5058 | 5058 | } |
| 5059 | 5059 | |
| | 5060 | /** |
| | 5061 | * Check if it has only ASCII characters or not. |
| | 5062 | * |
| | 5063 | * @since 5.0.0 |
| | 5064 | * @param string $str Strings that may contain none-ASCII chars. |
| | 5065 | * @return bool Return true if $str is ASCII text. |
| | 5066 | */ |
| | 5067 | function is_ascii_text( $str ) { |
| | 5068 | if ( preg_match( '/^[\\x{0000}-\\x{007F}]+$/u', $str, $match ) ) { |
| | 5069 | return true; |
| | 5070 | } else { |
| | 5071 | return false; |
| | 5072 | } |
| | 5073 | } |
| | 5074 | |
| 5060 | 5075 | /** |
| 5061 | 5076 | * Sanitizes a multiline string from user input or from the database. |
| 5062 | 5077 | * |
diff --git tests/phpunit/tests/formatting/FileName.php tests/phpunit/tests/formatting/FileName.php
new file mode 100644
index 0000000000..2abc32cf46
|
-
|
+
|
|
| | 1 | <?php |
| | 2 | |
| | 3 | /** |
| | 4 | * @group formatting |
| | 5 | */ |
| | 6 | class Tests_Formatting_FileName extends WP_UnitTestCase { |
| | 7 | /** |
| | 8 | * Check if it contains none-ASCII character or not. |
| | 9 | */ |
| | 10 | function test_contains_ascii_chars() { |
| | 11 | $ascii_text = 'Welcome to WordPress.'; |
| | 12 | $this->assertTrue( is_ascii_text( $ascii_text ) ); |
| | 13 | |
| | 14 | $none_ascii_text = 'WordPressへようこそ'; |
| | 15 | $this->assertFalse( is_ascii_text( $none_ascii_text ) ); |
| | 16 | } |
| | 17 | } |