From be0c042c083aaaeca5444a3de0f5267c55b6bb76 Mon Sep 17 00:00:00 2001 From: Andrew Ozz Date: Wed, 25 Nov 2009 05:04:30 +0000 Subject: [PATCH] Set uploaded files extensions to lower case, fixes #11218 git-svn-id: https://develop.svn.wordpress.org/trunk@12274 602fd350-edb4-49c9-b593-d223f7449a82 --- wp-includes/functions.php | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/wp-includes/functions.php b/wp-includes/functions.php index 6863b17b1a..18f3b7d351 100644 --- a/wp-includes/functions.php +++ b/wp-includes/functions.php @@ -2105,11 +2105,11 @@ function wp_unique_filename( $dir, $filename, $unique_filename_callback = null ) // separate the filename into a name and extension $info = pathinfo($filename); - $ext = !empty($info['extension']) ? $info['extension'] : ''; - $name = basename($filename, ".{$ext}"); + $ext = !empty($info['extension']) ? '.' . $info['extension'] : ''; + $name = basename($filename, $ext); // edge case: if file is named '.ext', treat as an empty name - if( $name === ".$ext" ) + if( $name === $ext ) $name = ''; // Increment the file number until we have a unique file to save in $dir. Use $override['unique_filename_callback'] if supplied. @@ -2118,8 +2118,20 @@ function wp_unique_filename( $dir, $filename, $unique_filename_callback = null ) } else { $number = ''; - if ( !empty( $ext ) ) - $ext = ".$ext"; + // change '.ext' to lower case + if ( $ext && strtolower($ext) != $ext ) { + $ext2 = strtolower($ext); + $filename2 = preg_replace( '|' . preg_quote($ext) . '$|', $ext2, $filename ); + + // check for both lower and upper case extension or image sub-sizes may be overwritten + while ( file_exists($dir . "/$filename") || file_exists($dir . "/$filename2") ) { + $new_number = $number + 1; + $filename = str_replace( "$number$ext", "$new_number$ext", $filename ); + $filename2 = str_replace( "$number$ext2", "$new_number$ext2", $filename2 ); + $number = $new_number; + } + return $filename2; + } while ( file_exists( $dir . "/$filename" ) ) { if ( '' == "$number$ext" )