diff --git a/wp-includes/formatting.php b/wp-includes/formatting.php index 3fae716831..01efc8ca16 100644 --- a/wp-includes/formatting.php +++ b/wp-includes/formatting.php @@ -1150,7 +1150,8 @@ function remove_accents($string) { * operating systems and special characters requiring special escaping * to manipulate at the command line. Replaces spaces and consecutive * dashes with a single dash. Trims period, dash and underscore from beginning - * and end of filename. + * and end of filename. It is not guaranteed that this function will return a + * filename that is allowed to be uploaded. * * @since 2.1.0 * @@ -1175,6 +1176,14 @@ function sanitize_file_name( $filename ) { $filename = preg_replace('/[\s-]+/', '-', $filename); $filename = trim($filename, '.-_'); + if ( false === strpos( $filename, '.' ) ) { + $mime_types = wp_get_mime_types(); + $filetype = wp_check_filetype( 'test.' . $filename, $mime_types ); + if ( $filetype['ext'] === $filename ) { + $filename = 'unnamed-file.' . $filetype['ext']; + } + } + // Split the filename into a base and extension[s] $parts = explode('.', $filename);