Ticket #46800: 46800.diff
File 46800.diff, 2.9 KB (added by , 6 years ago) |
---|
-
src/wp-admin/includes/media.php
357 357 $track_number = explode( '/', $meta['track_number'] ); 358 358 if ( isset( $track_number[1] ) ) { 359 359 /* translators: Audio file track information. 1: Audio track number, 2: Total audio tracks */ 360 $content .= ' ' . sprintf( __( 'Track %1$s of %2$s.' ), number_format_i18n( $track_number[0] ), number_format_i18n($track_number[1] ) );360 $content .= ' ' . sprintf( __( 'Track %1$s of %2$s.' ), number_format_i18n( (int) $track_number[0] ), number_format_i18n( (int) $track_number[1] ) ); 361 361 } else { 362 362 /* translators: Audio file track information. %s: Audio track number */ 363 $content .= ' ' . sprintf( __( 'Track %s.' ), number_format_i18n( $track_number[0] ) );363 $content .= ' ' . sprintf( __( 'Track %s.' ), number_format_i18n( (int) $track_number[0] ) ); 364 364 } 365 365 } 366 366 … … 3282 3282 } 3283 3283 3284 3284 /** 3285 * Sanitizes metadata extracted from media files. 3286 * 3287 * Currently only binary strings are sanitized with focus on preventing propagation of 3288 * bad character encodings from causing database calls and API endpoints to fail. 3289 * 3290 * @param array $metadata An existing array with data 3291 * 3292 * @return array Returns array of sanitized metadata. 3293 */ 3294 function wp_sanitize_media_metadata( $metadata ) { 3295 if ( ! is_array( $metadata ) || ! function_exists( 'mb_convert_encoding' ) ) { 3296 return $metadata; 3297 } 3298 foreach ( $metadata as $name => $value ) { 3299 if ( ! is_string( $value ) ) { 3300 continue; 3301 } 3302 if ( is_array( $value ) ) { 3303 $value = wp_sanitize_media_metadata( $value ); 3304 } elseif ( is_string( $value ) && preg_match('~[^\x20-\x7E\t\r\n]~', $value ) > 0 ) { 3305 $encoding = mb_detect_encoding( $value, 'ISO-8859-1, UCS-2' ); 3306 $value = $encoding ? mb_convert_encoding( $value, 'UTF-8', $encoding ) : utf8_encode( $value ); 3307 } 3308 $metadata[$name] = $value; 3309 } 3310 return $metadata; 3311 } 3312 3313 /** 3285 3314 * Retrieve metadata from a video file's ID3 tags 3286 3315 * 3287 3316 * @since 3.6.0 … … 3363 3392 3364 3393 $file_format = isset( $metadata['fileformat'] ) ? $metadata['fileformat'] : null; 3365 3394 3395 $metadata = wp_sanitize_media_metadata( $metadata ); 3396 3366 3397 /** 3367 3398 * Filters the array of metadata retrieved from a video. 3368 3399 * … … 3434 3465 3435 3466 wp_add_id3_tag_data( $metadata, $data ); 3436 3467 3468 $metadata = wp_sanitize_media_metadata( $metadata ); 3469 3437 3470 return $metadata; 3438 3471 } 3439 3472 -
src/wp-includes/post.php
5631 5631 } 5632 5632 5633 5633 $data = get_post_meta( $post->ID, '_wp_attachment_metadata', true ); 5634 $data = wp_sanitize_media_metadata( $data ); 5634 5635 5635 5636 if ( $unfiltered ) { 5636 5637 return $data;