[wp-trac] [WordPress Trac] #42437: Thumbnails can overwrite other uploads if filename matches

WordPress Trac noreply at wordpress.org
Wed May 16 09:35:52 UTC 2018


#42437: Thumbnails can overwrite other uploads if filename matches
--------------------------+-----------------------------
 Reporter:  Viper007Bond  |       Owner:  (none)
     Type:  defect (bug)  |      Status:  new
 Priority:  normal        |   Milestone:  Future Release
Component:  Upload        |     Version:  4.8.3
 Severity:  normal        |  Resolution:
 Keywords:  needs-patch   |     Focuses:
--------------------------+-----------------------------

Comment (by azaozz):

 Replying to [comment:11 pbiron]:
 > ...doing so might cause UX disconnects for some users.

 Right, and generally there is no point in fixing one rare edge case and
 possibly introducing another.

 > The best way I can think of avoiding these kinds of conflicts is to add
 a short hash to filenames of intermediate image sizes

 We already make the file names of intermediate image sizes longer. As far
 as I remember there was a problem with exceeding the allowed file name
 length for certain filesystems. Adding another (possibly long) string to
 the file names may trigger that.

 How about [#comment:5 my other idea]: if the original file name ends with
 something like `-600x800.jpg` rename it and append `-1`, `-2`, etc. the
 same way we do for all other naming conflicts in WP.

 The (basic) code to implement this would be:
 {{{
 if ( preg_match( '/.+-\n+x\n+$/', $file_name ) ) {
   // Always append `-1` to file names that can potentially match other
 subsize file names.
   $i = 1;
   $full_name = $file_name . "-$i" . $file_extension;

   while ( is_file( $uploads_dir . $full_name ) ) {
     $i++;
     $full_name = $file_name . "-$i" . $file_extension;
   }
 }
 }}}

 This will give us file names like `sunset-150x150-1.jpg`, `sundown-
 150x150-2.jpg` or `here-comes-the-night-150x150-1.jpg`. These names are a
 lot more "readable" and close to the original than something like `sunset-
 150x150-27624fea676d86f7.jpg` for subsizes.

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/42437#comment:16>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list