diff --git a/wp-admin/admin-header.php b/wp-admin/admin-header.php index 5f0fb75916..0a2b0b9d3f 100644 --- a/wp-admin/admin-header.php +++ b/wp-admin/admin-header.php @@ -77,13 +77,13 @@ wp_enqueue_script( 'svg-painter' ); $admin_body_class = preg_replace( '/[^a-z0-9_-]+/i', '-', $hook_suffix ); ?> diff --git a/wp-admin/custom-background.php b/wp-admin/custom-background.php index e5151015ec..7d91333c22 100644 --- a/wp-admin/custom-background.php +++ b/wp-admin/custom-background.php @@ -574,6 +574,8 @@ class Custom_Background { * @deprecated 3.5.0 */ public function wp_set_background_image() { + check_ajax_referer( 'custom-background' ); + if ( ! current_user_can( 'edit_theme_options' ) || ! isset( $_POST['attachment_id'] ) ) { exit; } diff --git a/wp-admin/custom-header.php b/wp-admin/custom-header.php index 127a46a6a7..a502e47063 100644 --- a/wp-admin/custom-header.php +++ b/wp-admin/custom-header.php @@ -338,7 +338,7 @@ class Custom_Image_Header { ?> addLoadEvent = function(func){if(typeof jQuery!="undefined")jQuery(document).ready(func);else if(typeof wpOnload!='function'){wpOnload=func;}else{var oldonload=wpOnload;wpOnload=function(){oldonload();func();}}}; function tb_close(){var win=window.dialogArguments||opener||parent||top;win.tb_remove();} -var ajaxurl = '', - pagenow = 'id; ?>', - typenow = 'post_type; ?>', - adminpage = '', - thousandsSeparator = 'number_format['thousands_sep'] ); ?>', - decimalPoint = 'number_format['decimal_point'] ); ?>', +var ajaxurl = '', + pagenow = 'id ); ?>', + typenow = 'post_type ); ?>', + adminpage = '', + thousandsSeparator = 'number_format['thousands_sep'] ); ?>', + decimalPoint = 'number_format['decimal_point'] ); ?>', isRtl = ; - +
diff --git a/wp-admin/network/site-users.php b/wp-admin/network/site-users.php index 5689014f2d..545aba0ce6 100644 --- a/wp-admin/network/site-users.php +++ b/wp-admin/network/site-users.php @@ -217,7 +217,7 @@ if ( ! wp_is_large_network( 'users' ) && apply_filters( 'show_network_site_users require( ABSPATH . 'wp-admin/admin-header.php' ); ?> diff --git a/wp-includes/Requests/Utility/FilteredIterator.php b/wp-includes/Requests/Utility/FilteredIterator.php index 76a29e7228..c657433248 100644 --- a/wp-includes/Requests/Utility/FilteredIterator.php +++ b/wp-includes/Requests/Utility/FilteredIterator.php @@ -42,4 +42,17 @@ class Requests_Utility_FilteredIterator extends ArrayIterator { $value = call_user_func($this->callback, $value); return $value; } + + /** + * @inheritdoc + */ + public function unserialize( $serialized ) { + } + + /** + * @inheritdoc + */ + public function __unserialize( $serialized ) { // phpcs:ignore PHPCompatibility.FunctionNameRestrictions.ReservedFunctionNames.MethodDoubleUnderscore,PHPCompatibility.FunctionNameRestrictions.NewMagicMethods.__unserializeFound + $this->unserialize( $serialized ); + } } diff --git a/wp-includes/class-wp-xmlrpc-server.php b/wp-includes/class-wp-xmlrpc-server.php index 923a98884f..85e0fac740 100644 --- a/wp-includes/class-wp-xmlrpc-server.php +++ b/wp-includes/class-wp-xmlrpc-server.php @@ -3829,6 +3829,21 @@ class wp_xmlrpc_server extends IXR_Server { return new IXR_Error( 403, __( 'Comment is required.' ) ); } + if ( + 'publish' === get_post_status( $post_id ) && + ! current_user_can( 'edit_post', $post_id ) && + post_password_required( $post_id ) + ) { + return new IXR_Error( 403, __( 'Sorry, you are not allowed to comment on this post.' ) ); + } + + if ( + 'private' === get_post_status( $post_id ) && + ! current_user_can( 'read_post', $post_id ) + ) { + return new IXR_Error( 403, __( 'Sorry, you are not allowed to comment on this post.' ) ); + } + $comment = array( 'comment_post_ID' => $post_id, 'comment_content' => $content_struct['content'], @@ -4233,7 +4248,8 @@ class wp_xmlrpc_server extends IXR_Server { /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ do_action( 'xmlrpc_call', 'wp.getMediaItem' ); - if ( ! $attachment = get_post( $attachment_id ) ) { + $attachment = get_post( $attachment_id ); + if ( ! $attachment || 'attachment' !== $attachment->post_type ) { return new IXR_Error( 404, __( 'Invalid attachment ID.' ) ); } diff --git a/wp-includes/embed.php b/wp-includes/embed.php index 2d0f916171..d886d3b2f9 100644 --- a/wp-includes/embed.php +++ b/wp-includes/embed.php @@ -604,7 +604,12 @@ function get_oembed_response_data_for_url( $url, $args ) { $sites = get_sites( $qv ); $site = reset( $sites ); - if ( $site && (int) $site->blog_id !== get_current_blog_id() ) { + // Do not allow embeds for deleted/archived/spam sites. + if ( ! empty( $site->deleted ) || ! empty( $site->spam ) || ! empty( $site->archived ) ) { + return false; + } + + if ( $site && get_current_blog_id() !== (int) $site->blog_id ) { switch_to_blog( $site->blog_id ); $switched_blog = true; } diff --git a/wp-includes/functions.php b/wp-includes/functions.php index bef6d40805..3d0eac990d 100644 --- a/wp-includes/functions.php +++ b/wp-includes/functions.php @@ -1566,7 +1566,8 @@ function is_blog_installed() { continue; } - if ( ! $wpdb->get_results( "DESCRIBE $table;" ) ) { + $described_table = $wpdb->get_results( "DESCRIBE $table;" ); + if ( is_array( $described_table ) && count( $described_table ) === 0 ) { continue; } diff --git a/wp-includes/meta.php b/wp-includes/meta.php index 0942a5a0db..12c9e912bd 100644 --- a/wp-includes/meta.php +++ b/wp-includes/meta.php @@ -1028,8 +1028,9 @@ function _get_meta_table( $type ) { * @param string|null $meta_type Optional. Type of object metadata is for (e.g., comment, post, term, or user). * @return bool Whether the meta key is considered protected. */ -function is_protected_meta( $meta_key, $meta_type = null ) { - $protected = ( '_' == $meta_key[0] ); +function is_protected_meta( $meta_key, $meta_type = '' ) { + $sanitized_key = preg_replace( "/[^\x20-\x7E\p{L}]/", '', $meta_key ); + $protected = strlen( $sanitized_key ) > 0 && ( '_' === $sanitized_key[0] ); /** * Filters whether a meta key is considered protected.