WordPress.org

Make WordPress Core

Ticket #18730: 18730.patch

File 18730.patch, 1.4 KB (added by kurtpayne, 2 years ago)

Determine file extension based on content type header

  • wp-admin/includes/file.php

     
    509509                unlink( $tmpfname ); 
    510510                return $response; 
    511511        } 
     512         
     513        // If no extension is given, add one based on the content-type header 
     514        $ext = pathinfo( $tmpfname, PATHINFO_EXTENSION ); 
     515        if ( empty( $ext ) && !empty( $response['headers']['content-type'] ) ) { 
     516                $mimes = get_allowed_mime_types(); 
     517                foreach ( (array) $mimes as $ext => $mime ) { 
     518                        if ( preg_match( '!^(' . $mime . ')$!i', $response['headers']['content-type']) ) { 
     519                                $ext = array_shift( explode( '|', $ext) ); 
     520                                rename($tmpfname, "$tmpfname.$ext"); 
     521                                $tmpfname .= ".$ext"; 
     522                                break; 
     523                        } 
     524                } 
     525        } 
    512526 
    513527        if ( 200 != wp_remote_retrieve_response_code( $response ) ){ 
    514528                unlink( $tmpfname ); 
  • wp-admin/includes/media.php

     
    587587 
    588588                // Set variables for storage 
    589589                // fix file filename for query strings 
    590                 preg_match('/[^\?]+\.(jpg|JPG|jpe|JPE|jpeg|JPEG|gif|GIF|png|PNG)/', $file, $matches); 
     590                preg_match('/[^\?]+\.(jpg|JPG|jpe|JPE|jpeg|JPEG|gif|GIF|png|PNG)/', $tmp, $matches); 
    591591                $file_array['name'] = basename($matches[0]); 
    592592                $file_array['tmp_name'] = $tmp; 
    593593