WordPress.org

Make WordPress Core

Ticket #16057: 16057.2.diff

File 16057.2.diff, 2.8 KB (added by dd32, 7 years ago)
  • wp-admin/includes/class-wp-filesystem-direct.php

     
    6262        function put_contents($file, $contents, $mode = false ) {
    6363                if ( ! ($fp = @fopen($file, 'w')) )
    6464                        return false;
    65                 @fwrite($fp, $contents);
     65                $bytes_written = @fwrite($fp, $contents);
    6666                @fclose($fp);
     67                if ( false === $bytes_written || is_int($bytes_written) && $bytes_written < strlen($contents) ) {
     68                        $this->delete($file);
     69                        return false;
     70                }
    6771                $this->chmod($file, $mode);
    6872                return true;
    6973        }
  • wp-admin/includes/class-wp-filesystem-ftpext.php

     
    121121                if ( ! $temp )
    122122                        return false;
    123123
    124                 fwrite($temp, $contents);
     124                $bytes_written = fwrite($temp, $contents);
     125                if ( false === $bytes_written || is_int($bytes_written) && $bytes_written < strlen($contents) ) {
     126                        fclose($temp);
     127                        unlink($tempfile);
     128                        return false;
     129                }
     130
    125131                fseek($temp, 0); //Skip back to the start of the file being written to
    126132
    127133                $type = $this->is_binary($contents) ? FTP_BINARY : FTP_ASCII;
  • wp-admin/includes/class-wp-filesystem-ftpsockets.php

     
    122122                        return false;
    123123                }
    124124
    125                 fwrite($temphandle, $contents);
     125                $bytes_written = fwrite($temphandle, $contents);
     126                if ( false === $bytes_written || is_int($bytes_written) && $bytes_written < strlen($contents) ) {
     127                        fclose($temphandle);
     128                        unlink($temp);
     129                        return false;
     130                }
    126131                fseek($temphandle, 0); //Skip back to the start of the file being written to
    127132
    128133                $type = $this->is_binary($contents) ? FTP_BINARY : FTP_ASCII;
  • wp-admin/includes/file.php

     
    537537                return new WP_Error('http_404', trim($response['response']['message']));
    538538        }
    539539
    540         fwrite($handle, $response['body']);
     540        $bytes_written = fwrite($handle, $response['body']);
    541541        fclose($handle);
    542542
     543        if ( false === $bytes_written || is_int($bytes_written) && $bytes_written < strlen($response['body']) ) {
     544                unlink($tmpfname);
     545                return new WP_Error('http_cannot_write', __('Could not write to the temporary file. There may not be enough diskspace.') );
     546        }
     547
    543548        return $tmpfname;
    544549}
    545550