Version in base suite: 6.8.3+dfsg1-0+deb13u1
Version in overlay suite: 6.8.6+dfsg1-0+deb13u1
Base version: wordpress_6.8.6+dfsg1-0+deb13u1
Target version: wordpress_6.8.7+dfsg1-0+deb13u1
Base file: /srv/ftp-master.debian.org/ftp/pool/main/w/wordpress/wordpress_6.8.6+dfsg1-0+deb13u1.dsc
Target file: /srv/ftp-master.debian.org/policy/pool/main/w/wordpress/wordpress_6.8.7+dfsg1-0+deb13u1.dsc
debian/changelog | 8 ++++++++
wp-admin/about.php | 20 ++++++++++++++++++++
wp-admin/includes/user.php | 11 ++++++++---
wp-admin/js/inline-edit-post.js | 7 ++++++-
wp-admin/js/inline-edit-post.min.js | 2 +-
wp-includes/blocks/post-date.php | 4 +++-
wp-includes/canonical.php | 2 +-
wp-includes/http.php | 27 ++++++++++++++++++++++++---
wp-includes/kses.php | 7 ++++++-
wp-includes/user.php | 24 +++++++++++++++++-------
wp-includes/version.php | 2 +-
wp-login.php | 4 ++--
wp-signup.php | 6 +++++-
13 files changed, 102 insertions(+), 22 deletions(-)
dpkg-source: warning: cannot verify inline signature for /srv/release.debian.org/tmp/tmp4w0jrt4x/wordpress_6.8.6+dfsg1-0+deb13u1.dsc: no acceptable signature found
dpkg-source: warning: cannot verify inline signature for /srv/release.debian.org/tmp/tmp4w0jrt4x/wordpress_6.8.7+dfsg1-0+deb13u1.dsc: no acceptable signature found
diff -Nru wordpress-6.8.6+dfsg1/debian/changelog wordpress-6.8.7+dfsg1/debian/changelog
--- wordpress-6.8.6+dfsg1/debian/changelog 2026-07-21 06:46:23.000000000 +0000
+++ wordpress-6.8.7+dfsg1/debian/changelog 2026-08-07 08:13:22.000000000 +0000
@@ -1,3 +1,11 @@
+wordpress (6.8.7+dfsg1-0+deb13u1) trixie-security; urgency=medium
+
+ * New upstream security release
+ CVE-2026-64638 fix XSS in login that leads to RCE Closes: #1143843
+
+
+ -- Craig Small
+ Version %s addressed some security issues.' ),
'6.8.6'
);
?>
diff -Nru wordpress-6.8.6+dfsg1/wp-admin/includes/user.php wordpress-6.8.7+dfsg1/wp-admin/includes/user.php
--- wordpress-6.8.6+dfsg1/wp-admin/includes/user.php 2025-03-02 00:43:23.807565000 +0000
+++ wordpress-6.8.7+dfsg1/wp-admin/includes/user.php 2026-08-06 17:35:49.211694000 +0000
@@ -44,6 +44,8 @@
$user->user_login = sanitize_user( wp_unslash( $_POST['user_login'] ), true );
}
+ $errors = new WP_Error();
+
$pass1 = '';
$pass2 = '';
if ( isset( $_POST['pass1'] ) ) {
@@ -78,7 +80,12 @@
}
if ( isset( $_POST['email'] ) ) {
- $user->user_email = sanitize_text_field( wp_unslash( $_POST['email'] ) );
+ $maybe_email = wp_unslash( $_POST['email'] );
+ if ( is_string( $maybe_email ) && is_email( $maybe_email ) ) {
+ $user->user_email = $maybe_email;
+ } else {
+ $errors->add( 'invalid_email', __( 'Error: The email address is not correct.' ), array( 'form-field' => 'email' ) );
+ }
}
if ( isset( $_POST['url'] ) ) {
if ( empty( $_POST['url'] ) || 'http://' === $_POST['url'] ) {
@@ -145,8 +152,6 @@
$user->use_ssl = 1;
}
- $errors = new WP_Error();
-
/* checking that username has been typed */
if ( '' === $user->user_login ) {
$errors->add( 'user_login', __( 'Error: Please enter a username.' ) );
diff -Nru wordpress-6.8.6+dfsg1/wp-admin/js/inline-edit-post.js wordpress-6.8.7+dfsg1/wp-admin/js/inline-edit-post.js
--- wordpress-6.8.6+dfsg1/wp-admin/js/inline-edit-post.js 2024-09-30 18:24:13.448376000 +0000
+++ wordpress-6.8.7+dfsg1/wp-admin/js/inline-edit-post.js 2026-08-06 17:35:49.211694000 +0000
@@ -359,7 +359,12 @@
if ( !$(':input[name="post_author"] option[value="' + $('.post_author', rowData).text() + '"]', editRow).val() ) {
// The post author no longer has edit capabilities, so we need to add them to the list of authors.
- $(':input[name="post_author"]', editRow).prepend('');
+ $(':input[name="post_author"]', editRow).prepend(
+ new Option(
+ $('#post-' + id + ' .author').text(),
+ $('.post_author', rowData).text()
+ )
+ );
}
if ( $( ':input[name="post_author"] option', editRow ).length === 1 ) {
$('label.inline-edit-author', editRow).hide();
diff -Nru wordpress-6.8.6+dfsg1/wp-admin/js/inline-edit-post.min.js wordpress-6.8.7+dfsg1/wp-admin/js/inline-edit-post.min.js
--- wordpress-6.8.6+dfsg1/wp-admin/js/inline-edit-post.min.js 2025-02-06 17:27:26.356615000 +0000
+++ wordpress-6.8.7+dfsg1/wp-admin/js/inline-edit-post.min.js 2026-08-06 17:35:49.211694000 +0000
@@ -1,2 +1,2 @@
/*! This file is auto-generated */
-window.wp=window.wp||{},function(u,h){window.inlineEditPost={init:function(){var i=this,t=u("#inline-edit"),e=u("#bulk-edit"),t=(i.type=u("table.widefat").hasClass("pages")?"page":"post",i.what="#post-",t.on("keyup",function(t){if(27===t.which)return inlineEditPost.revert()}),e.on("keyup",function(t){if(27===t.which)return inlineEditPost.revert()}),u(".cancel",t).on("click",function(){return inlineEditPost.revert()}),u(".save",t).on("click",function(){return inlineEditPost.save(this)}),u("td",t).on("keydown",function(t){if(13===t.which&&!u(t.target).hasClass("cancel"))return inlineEditPost.save(this)}),u(".cancel",e).on("click",function(){return inlineEditPost.revert()}),u('#inline-edit .inline-edit-private input[value="private"]').on("click",function(){var t=u("input.inline-edit-password-input");u(this).prop("checked")?t.val("").prop("disabled",!0):t.prop("disabled",!1)}),u("#the-list").on("click",".editinline",function(){u(this).attr("aria-expanded","true"),inlineEditPost.edit(this)}),u("#inline-edit fieldset.inline-edit-categories").clone());t.find("*[id]").each(function(){this.id="bulk-edit-"+this.id}),u("#bulk-edit").find("fieldset:first").after(t).siblings("fieldset:last").prepend(u("#inline-edit .inline-edit-tags-wrap").clone()),u('select[name="_status"] option[value="future"]',e).remove(),u("#doaction").on("click",function(t){var e;u('#posts-filter .check-column input[type="checkbox"]:checked').length<1||(i.whichBulkButtonId=u(this).attr("id"),e=i.whichBulkButtonId.substr(2),"edit"===u('select[name="'+e+'"]').val()?(t.preventDefault(),i.setBulk()):0'),u("#bulk-edit").addClass("inline-editor").show(),u('tbody th.check-column input[type="checkbox"]').each(function(){var t,e,i;u(this).prop("checked")&&(a=!1,t=u(this).val(),e=u("#inline_"+t+" .post_title").html()||h.i18n.__("(no title)"),i=h.i18n.sprintf(h.i18n.__("Remove “%s” from Bulk Edit"),e),n+=''+n+"
"),e.each(function(){var t=u(this).val();u("#category_"+t).text().split(",").map(function(t){i[t]||(i[t]=0),i[t]++})}),u('.inline-edit-categories input[name="post_category[]"]').each(function(){var t;i[u(this).val()]==e.length?u(this).prop("checked",!0):0').attr("aria-label",t.trim()+": "+h.i18n.__("Some selected posts have this category"))))}),u('.inline-edit-categories input[name="post_category[]"]:indeterminate').on("change",function(){u(this).removeAttr("aria-label").parent().find('input[name="indeterminate_post_category[]"]').remove()}),u(".inline-edit-save button").on("click",function(){u('.inline-edit-categories input[name="post_category[]"]').prop("indeterminate",!1)}),u("#bulk-titles .ntdelbutton").click(function(){var t=u(this),e=t.attr("id").substr(1),i=t.parent().prev().children(".ntdelbutton"),t=t.parent().next().children(".ntdelbutton");u("input#cb-select-all-1, input#cb-select-all-2").prop("checked",!1),u('table.widefat input[value="'+e+'"]').prop("checked",!1),u("#_"+e).parent().remove(),h.a11y.speak(h.i18n.__("Item removed."),"assertive"),t.length?t.focus():i.length?i.focus():(u("#bulk-titles-list").remove(),inlineEditPost.revert(),h.a11y.speak(h.i18n.__("All selected items have been removed. Select new items to use Bulk Actions.")))}),"post"===t&&u("tr.inline-editor textarea[data-wp-taxonomy]").each(function(t,e){u(e).autocomplete("instance")||u(e).wpTagsSuggest()}),u("#bulk-edit .inline-edit-wrapper").attr("tabindex","-1").focus(),u("html, body").animate({scrollTop:0},"fast")},edit:function(n){var t,a,e,i,s,o,r,l,d=this,c=!0;for(d.revert(),"object"==typeof n&&(n=d.getId(n)),t=["post_title","post_name","post_author","_status","jj","mm","aa","hh","mn","ss","post_password","post_format","menu_order","page_template"],"page"===d.type&&t.push("post_parent"),a=u("#inline-edit").clone(!0),u("td",a).attr("colspan",u("th:visible, td:visible",".widefat:first thead").length),u("td",a).find("#quick-edit-legend").removeAttr("id"),u("td",a).find('p[id^="quick-edit-"]').removeAttr("id"),u(d.what+n).removeClass("is-expanded").hide().after(a).after(''),e=u("#inline_"+n),u(':input[name="post_author"] option[value="'+u(".post_author",e).text()+'"]',a).val()||u(':input[name="post_author"]',a).prepend('"),1===u(':input[name="post_author"] option',a).length&&u("label.inline-edit-author",a).hide(),r=0;r ]*?>/g,""),e.removeClass("hidden"),i.html(t),h.a11y.speak(i.text())):(e.removeClass("hidden"),i.text(h.i18n.__("Error while saving the changes.")),h.a11y.speak(h.i18n.__("Error while saving the changes.")))},"html"),!1},revert:function(){var t=u(".widefat"),e=u(".inline-editor",t).attr("id");return e&&(u(".spinner",t).removeClass("is-active"),("bulk-edit"===e?(u("#bulk-edit",t).removeClass("inline-editor").hide().siblings(".hidden").remove(),u("#bulk-titles").empty(),u("#inlineedit").append(u("#bulk-edit")),u("#"+inlineEditPost.whichBulkButtonId)):(u("#"+e).siblings("tr.hidden").addBack().remove(),e=e.substr(e.lastIndexOf("-")+1),u(this.what+e).show().find(".editinline").attr("aria-expanded","false"))).trigger("focus")),!1},getId:function(t){t=u(t).closest("tr").attr("id").split("-");return t[t.length-1]}},u(function(){inlineEditPost.init()}),u(function(){void 0!==h&&h.heartbeat&&h.heartbeat.interval(10)}).on("heartbeat-tick.wp-check-locked-posts",function(t,e){var n=e["wp-check-locked-posts"]||{};u("#the-list tr").each(function(t,e){var i=e.id,e=u(e);n.hasOwnProperty(i)?e.hasClass("wp-locked")||(i=n[i],e.find(".column-title .locked-text").text(i.text),e.find(".check-column checkbox").prop("checked",!1),i.avatar_src&&(i=u(" '),u("#bulk-edit").addClass("inline-editor").show(),u('tbody th.check-column input[type="checkbox"]').each(function(){var t,e,i;u(this).prop("checked")&&(a=!1,t=u(this).val(),e=u("#inline_"+t+" .post_title").html()||h.i18n.__("(no title)"),i=h.i18n.sprintf(h.i18n.__("Remove “%s” from Bulk Edit"),e),n+='",{class:"avatar avatar-18 photo",width:18,height:18,alt:"",src:i.avatar_src,srcset:i.avatar_src_2x?i.avatar_src_2x+" 2x":void 0}),e.find(".column-title .locked-avatar").empty().append(i)),e.addClass("wp-locked")):e.hasClass("wp-locked")&&e.removeClass("wp-locked").find(".locked-info span").empty()})}).on("heartbeat-send.wp-check-locked-posts",function(t,e){var i=[];u("#the-list tr").each(function(t,e){e.id&&i.push(e.id)}),i.length&&(e["wp-check-locked-posts"]=i)})}(jQuery,window.wp);
\ No newline at end of file
+window.wp=window.wp||{},function(u,h){window.inlineEditPost={init:function(){var i=this,t=u("#inline-edit"),e=u("#bulk-edit"),t=(i.type=u("table.widefat").hasClass("pages")?"page":"post",i.what="#post-",t.on("keyup",function(t){if(27===t.which)return inlineEditPost.revert()}),e.on("keyup",function(t){if(27===t.which)return inlineEditPost.revert()}),u(".cancel",t).on("click",function(){return inlineEditPost.revert()}),u(".save",t).on("click",function(){return inlineEditPost.save(this)}),u("td",t).on("keydown",function(t){if(13===t.which&&!u(t.target).hasClass("cancel"))return inlineEditPost.save(this)}),u(".cancel",e).on("click",function(){return inlineEditPost.revert()}),u('#inline-edit .inline-edit-private input[value="private"]').on("click",function(){var t=u("input.inline-edit-password-input");u(this).prop("checked")?t.val("").prop("disabled",!0):t.prop("disabled",!1)}),u("#the-list").on("click",".editinline",function(){u(this).attr("aria-expanded","true"),inlineEditPost.edit(this)}),u("#inline-edit fieldset.inline-edit-categories").clone());t.find("*[id]").each(function(){this.id="bulk-edit-"+this.id}),u("#bulk-edit").find("fieldset:first").after(t).siblings("fieldset:last").prepend(u("#inline-edit .inline-edit-tags-wrap").clone()),u('select[name="_status"] option[value="future"]',e).remove(),u("#doaction").on("click",function(t){var e;u('#posts-filter .check-column input[type="checkbox"]:checked').length<1||(i.whichBulkButtonId=u(this).attr("id"),e=i.whichBulkButtonId.substr(2),"edit"===u('select[name="'+e+'"]').val()?(t.preventDefault(),i.setBulk()):0
'+n+"
"),e.each(function(){var t=u(this).val();u("#category_"+t).text().split(",").map(function(t){i[t]||(i[t]=0),i[t]++})}),u('.inline-edit-categories input[name="post_category[]"]').each(function(){var t;i[u(this).val()]==e.length?u(this).prop("checked",!0):0').attr("aria-label",t.trim()+": "+h.i18n.__("Some selected posts have this category"))))}),u('.inline-edit-categories input[name="post_category[]"]:indeterminate').on("change",function(){u(this).removeAttr("aria-label").parent().find('input[name="indeterminate_post_category[]"]').remove()}),u(".inline-edit-save button").on("click",function(){u('.inline-edit-categories input[name="post_category[]"]').prop("indeterminate",!1)}),u("#bulk-titles .ntdelbutton").click(function(){var t=u(this),e=t.attr("id").substr(1),i=t.parent().prev().children(".ntdelbutton"),t=t.parent().next().children(".ntdelbutton");u("input#cb-select-all-1, input#cb-select-all-2").prop("checked",!1),u('table.widefat input[value="'+e+'"]').prop("checked",!1),u("#_"+e).parent().remove(),h.a11y.speak(h.i18n.__("Item removed."),"assertive"),t.length?t.focus():i.length?i.focus():(u("#bulk-titles-list").remove(),inlineEditPost.revert(),h.a11y.speak(h.i18n.__("All selected items have been removed. Select new items to use Bulk Actions.")))}),"post"===t&&u("tr.inline-editor textarea[data-wp-taxonomy]").each(function(t,e){u(e).autocomplete("instance")||u(e).wpTagsSuggest()}),u("#bulk-edit .inline-edit-wrapper").attr("tabindex","-1").focus(),u("html, body").animate({scrollTop:0},"fast")},edit:function(n){var t,a,e,i,s,r,o,l,d=this,c=!0;for(d.revert(),"object"==typeof n&&(n=d.getId(n)),t=["post_title","post_name","post_author","_status","jj","mm","aa","hh","mn","ss","post_password","post_format","menu_order","page_template"],"page"===d.type&&t.push("post_parent"),a=u("#inline-edit").clone(!0),u("td",a).attr("colspan",u("th:visible, td:visible",".widefat:first thead").length),u("td",a).find("#quick-edit-legend").removeAttr("id"),u("td",a).find('p[id^="quick-edit-"]').removeAttr("id"),u(d.what+n).removeClass("is-expanded").hide().after(a).after(''),e=u("#inline_"+n),u(':input[name="post_author"] option[value="'+u(".post_author",e).text()+'"]',a).val()||u(':input[name="post_author"]',a).prepend(new Option(u("#post-"+n+" .author").text(),u(".post_author",e).text())),1===u(':input[name="post_author"] option',a).length&&u("label.inline-edit-author",a).hide(),o=0;o ]*?>/g,""),e.removeClass("hidden"),i.html(t),h.a11y.speak(i.text())):(e.removeClass("hidden"),i.text(h.i18n.__("Error while saving the changes.")),h.a11y.speak(h.i18n.__("Error while saving the changes.")))},"html"),!1},revert:function(){var t=u(".widefat"),e=u(".inline-editor",t).attr("id");return e&&(u(".spinner",t).removeClass("is-active"),("bulk-edit"===e?(u("#bulk-edit",t).removeClass("inline-editor").hide().siblings(".hidden").remove(),u("#bulk-titles").empty(),u("#inlineedit").append(u("#bulk-edit")),u("#"+inlineEditPost.whichBulkButtonId)):(u("#"+e).siblings("tr.hidden").addBack().remove(),e=e.substr(e.lastIndexOf("-")+1),u(this.what+e).show().find(".editinline").attr("aria-expanded","false"))).trigger("focus")),!1},getId:function(t){t=u(t).closest("tr").attr("id").split("-");return t[t.length-1]}},u(function(){inlineEditPost.init()}),u(function(){void 0!==h&&h.heartbeat&&h.heartbeat.interval(10)}).on("heartbeat-tick.wp-check-locked-posts",function(t,e){var n=e["wp-check-locked-posts"]||{};u("#the-list tr").each(function(t,e){var i=e.id,e=u(e);n.hasOwnProperty(i)?e.hasClass("wp-locked")||(i=n[i],e.find(".column-title .locked-text").text(i.text),e.find(".check-column checkbox").prop("checked",!1),i.avatar_src&&(i=u(" ",{class:"avatar avatar-18 photo",width:18,height:18,alt:"",src:i.avatar_src,srcset:i.avatar_src_2x?i.avatar_src_2x+" 2x":void 0}),e.find(".column-title .locked-avatar").empty().append(i)),e.addClass("wp-locked")):e.hasClass("wp-locked")&&e.removeClass("wp-locked").find(".locked-info span").empty()})}).on("heartbeat-send.wp-check-locked-posts",function(t,e){var i=[];u("#the-list tr").each(function(t,e){e.id&&i.push(e.id)}),i.length&&(e["wp-check-locked-posts"]=i)})}(jQuery,window.wp);
\ No newline at end of file
diff -Nru wordpress-6.8.6+dfsg1/wp-includes/blocks/post-date.php wordpress-6.8.7+dfsg1/wp-includes/blocks/post-date.php
--- wordpress-6.8.6+dfsg1/wp-includes/blocks/post-date.php 2024-09-20 01:55:35.097845000 +0000
+++ wordpress-6.8.7+dfsg1/wp-includes/blocks/post-date.php 2026-08-06 17:35:49.211694000 +0000
@@ -66,7 +66,9 @@
$wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classes ) ) );
if ( isset( $attributes['isLink'] ) && $attributes['isLink'] ) {
- $formatted_date = sprintf( '%2s', get_the_permalink( $post_ID ), $formatted_date );
+ $formatted_date = sprintf( '%2$s', esc_url( get_the_permalink( $post_ID ) ), esc_html( $formatted_date ) );
+ } else {
+ $formatted_date = esc_html( $formatted_date );
}
return sprintf(
diff -Nru wordpress-6.8.6+dfsg1/wp-includes/canonical.php wordpress-6.8.7+dfsg1/wp-includes/canonical.php
--- wordpress-6.8.6+dfsg1/wp-includes/canonical.php 2024-08-22 23:47:15.117646000 +0000
+++ wordpress-6.8.7+dfsg1/wp-includes/canonical.php 2026-08-06 17:35:49.211694000 +0000
@@ -977,7 +977,7 @@
if ( empty( $post_types ) ) {
return false;
}
- $where .= " AND post_type IN ('" . join( "', '", esc_sql( get_query_var( 'post_type' ) ) ) . "')";
+ $where .= " AND post_type IN ('" . join( "', '", esc_sql( $post_types ) ) . "')";
} else {
if ( ! in_array( get_query_var( 'post_type' ), $publicly_viewable_post_types, true ) ) {
return false;
diff -Nru wordpress-6.8.6+dfsg1/wp-includes/http.php wordpress-6.8.7+dfsg1/wp-includes/http.php
--- wordpress-6.8.6+dfsg1/wp-includes/http.php 2024-10-27 19:05:18.798038000 +0000
+++ wordpress-6.8.7+dfsg1/wp-includes/http.php 2026-08-06 17:35:49.211694000 +0000
@@ -588,9 +588,30 @@
}
if ( $ip ) {
$parts = array_map( 'intval', explode( '.', $ip ) );
- if ( 127 === $parts[0] || 10 === $parts[0] || 0 === $parts[0]
- || ( 172 === $parts[0] && 16 <= $parts[1] && 31 >= $parts[1] )
- || ( 192 === $parts[0] && 168 === $parts[1] )
+
+ /*
+ * These IP address ranges are not considered valid external hosts for HTTP requests.
+ *
+ * If the host resolves to an IP address in these ranges, the request will be rejected unless the 'http_request_host_is_external' filter allows it.
+ *
+ * References:
+ *
+ * - IPv4 Special-Purpose Address Space: https://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml
+ * - IPv4 Multicast Address Assignments: https://www.rfc-editor.org/rfc/rfc5771.html
+ */
+ if ( 127 === $parts[0] || 10 === $parts[0] || 0 === $parts[0] // 127.0.0.0/8 (loopback), 10.0.0.0/8 (private), 0.0.0.0/8 (this network).
+ || ( 172 === $parts[0] && 16 <= $parts[1] && 31 >= $parts[1] ) // 172.16.0.0/12 (private).
+ || ( 192 === $parts[0] && 168 === $parts[1] ) // 192.168.0.0/16 (private).
+ || ( 192 === $parts[0] && 0 === $parts[1] && 0 === $parts[2] ) // 192.0.0.0/24 (IETF protocol assignments).
+ || ( 192 === $parts[0] && 0 === $parts[1] && 2 === $parts[2] ) // 192.0.2.0/24 (TEST-NET-1).
+ || ( 192 === $parts[0] && 88 === $parts[1] && 99 === $parts[2] ) // 192.88.99.0/24 (6to4 relay anycast).
+ || ( 198 === $parts[0] && 51 === $parts[1] && 100 === $parts[2] ) // 198.51.100.0/24 (TEST-NET-2).
+ || ( 203 === $parts[0] && 0 === $parts[1] && 113 === $parts[2] ) // 203.0.113.0/24 (TEST-NET-3).
+ || ( 169 === $parts[0] && 254 === $parts[1] ) // 169.254.0.0/16 (link-local and cloud metadata).
+ || ( 100 === $parts[0] && 64 <= $parts[1] && 127 >= $parts[1] ) // 100.64.0.0/10 (CGNAT).
+ || ( 198 === $parts[0] && 18 <= $parts[1] && 19 >= $parts[1] ) // 198.18.0.0/15 (benchmarking).
+ || ( 224 <= $parts[0] && 239 >= $parts[0] ) // 224.0.0.0/4 (multicast).
+ || 240 <= $parts[0] // 240.0.0.0/4 (reserved, includes 255.255.255.255 broadcast).
) {
// If host appears local, reject unless specifically allowed.
/**
diff -Nru wordpress-6.8.6+dfsg1/wp-includes/kses.php wordpress-6.8.7+dfsg1/wp-includes/kses.php
--- wordpress-6.8.6+dfsg1/wp-includes/kses.php 2026-03-10 16:37:37.009287000 +0000
+++ wordpress-6.8.7+dfsg1/wp-includes/kses.php 2026-08-06 17:35:49.211694000 +0000
@@ -2662,11 +2662,16 @@
$css_test_string
);
+ // Bail if the recursive function stripping hit a PCRE error (e.g. stack/backtrack limit).
+ if ( null === $css_test_string ) {
+ continue;
+ }
+
/*
* Disallow CSS containing \ ( & } = or comments, except for within url(), var(), calc(), etc.
* which were removed from the test string above.
*/
- $allow_css = ! preg_match( '%[\\\(&=}]|/\*%', $css_test_string );
+ $allow_css = 0 === preg_match( '%[\\\(&=}]|/\*%', $css_test_string );
/**
* Filters the check for unsafe CSS in `safecss_filter_attr`.
diff -Nru wordpress-6.8.6+dfsg1/wp-includes/user.php wordpress-6.8.7+dfsg1/wp-includes/user.php
--- wordpress-6.8.6+dfsg1/wp-includes/user.php 2025-03-04 14:19:22.985991000 +0000
+++ wordpress-6.8.7+dfsg1/wp-includes/user.php 2026-08-06 17:35:49.211694000 +0000
@@ -186,7 +186,7 @@
sprintf(
/* translators: %s: User name. */
__( 'Error: The username %s is not registered on this site. If you are unsure of your username, try your email address instead.' ),
- $username
+ esc_html( $username )
)
);
}
@@ -213,7 +213,7 @@
sprintf(
/* translators: %s: User name. */
__( 'Error: The password you entered for the username %s is incorrect.' ),
- '' . $username . ''
+ '' . esc_html( $username ) . ''
) .
' ' .
__( 'Lost your password?' ) .
@@ -296,7 +296,7 @@
sprintf(
/* translators: %s: Email address. */
__( 'Error: The password you entered for the email address %s is incorrect.' ),
- '' . $email . ''
+ '' . esc_html( $email ) . ''
) .
' ' .
__( 'Lost your password?' ) .
@@ -3495,7 +3495,7 @@
sprintf(
/* translators: %s: Link to the login page. */
__( 'Error: This email address is already registered. Log in with this address or choose another one.' ),
- wp_login_url()
+ esc_url( wp_login_url() )
)
);
}
@@ -3543,7 +3543,7 @@
sprintf(
/* translators: %s: Admin email address. */
__( 'Error: Could not register you… please contact the site admin!' ),
- get_option( 'admin_email' )
+ esc_attr( get_option( 'admin_email' ) )
)
);
return $errors;
@@ -3766,18 +3766,26 @@
*
* @since 3.0.0
* @since 4.9.0 This function was moved from wp-admin/includes/ms.php so it's no longer Multisite specific.
+ * @since 7.0.3 Added the `$user_id` parameter, which is sent with the `personal_options_update` action.
+ *
+ * @param int $user_id Optional. The ID of the user whose email is being changed. Defaults to `$_POST['user_id']` if set, otherwise 0.
*
* @global WP_Error $errors WP_Error object.
*/
-function send_confirmation_on_profile_email() {
+function send_confirmation_on_profile_email( $user_id = 0 ) {
global $errors;
+ // Maintain backward compatibility for those relying on a check based on $_POST['user_id'].
+ if ( ! $user_id && isset( $_POST['user_id'] ) ) {
+ $user_id = absint( $_POST['user_id'] );
+ }
+
$current_user = wp_get_current_user();
if ( ! is_object( $errors ) ) {
$errors = new WP_Error();
}
- if ( $current_user->ID !== (int) $_POST['user_id'] ) {
+ if ( 0 === $current_user->ID || $current_user->ID !== (int) $user_id ) {
return false;
}
@@ -3791,6 +3799,7 @@
)
);
+ $_POST['email'] = addslashes( $current_user->user_email );
return;
}
@@ -3804,6 +3813,7 @@
);
delete_user_meta( $current_user->ID, '_new_email' );
+ $_POST['email'] = addslashes( $current_user->user_email );
return;
}
diff -Nru wordpress-6.8.6+dfsg1/wp-includes/version.php wordpress-6.8.7+dfsg1/wp-includes/version.php
--- wordpress-6.8.6+dfsg1/wp-includes/version.php 2026-07-17 17:55:58.000000000 +0000
+++ wordpress-6.8.7+dfsg1/wp-includes/version.php 2026-08-06 18:10:34.000000000 +0000
@@ -16,7 +16,7 @@
*
* @global string $wp_version
*/
-$wp_version = '6.8.6';
+$wp_version = '6.8.7';
/**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
diff -Nru wordpress-6.8.6+dfsg1/wp-login.php wordpress-6.8.7+dfsg1/wp-login.php
--- wordpress-6.8.6+dfsg1/wp-login.php 2025-02-03 16:55:23.584362000 +0000
+++ wordpress-6.8.7+dfsg1/wp-login.php 2026-08-06 17:35:49.211694000 +0000
@@ -1221,7 +1221,7 @@
sprintf(
/* translators: %s: Link to the login page. */
__( 'Check your email for the confirmation link, then visit the login page.' ),
- wp_login_url()
+ esc_url( wp_login_url() )
),
'message'
);
@@ -1231,7 +1231,7 @@
sprintf(
/* translators: %s: Link to the login page. */
__( 'Registration complete. Please check your email, then visit the login page.' ),
- wp_login_url()
+ esc_url( wp_login_url() )
),
'message'
);
diff -Nru wordpress-6.8.6+dfsg1/wp-signup.php wordpress-6.8.7+dfsg1/wp-signup.php
--- wordpress-6.8.6+dfsg1/wp-signup.php 2025-03-10 18:16:27.024762000 +0000
+++ wordpress-6.8.7+dfsg1/wp-signup.php 2026-08-06 17:35:49.211694000 +0000
@@ -996,7 +996,11 @@
}
break;
case 'gimmeanotherblog':
- validate_another_blog_signup();
+ if ( 'all' === $active_signup || 'blog' === $active_signup ) {
+ validate_another_blog_signup();
+ } else {
+ _e( 'Site registration has been disabled.' );
+ }
break;
case 'default':
default: