From 265a0f4d989dadfe7ec68ac27c0fa4deb4dc6058 Mon Sep 17 00:00:00 2001 From: John Blackbourn Date: Fri, 10 Mar 2017 14:33:46 +0000 Subject: [PATCH] Build/Test tools: Don't override the `wp_set_auth_cookie()` and `wp_clear_auth_cookie()` functions. Overriding pluggable functions in the test suite is asking for trouble in the future. In addition, it means the test suite can't be guaranteed to behave the same as core. This instead introduces a `send_auth_cookies` filter which can be hooked in during the test suite to prevent these functions from attempting to send cookie headers to the client. Fixes #39367 Built from https://develop.svn.wordpress.org/trunk@40263 git-svn-id: http://core.svn.wordpress.org/trunk@40183 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/pluggable.php | 22 ++++++++++++++++++++++ wp-includes/version.php | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/wp-includes/pluggable.php b/wp-includes/pluggable.php index 0de6b0cc78..61b809c542 100644 --- a/wp-includes/pluggable.php +++ b/wp-includes/pluggable.php @@ -900,6 +900,17 @@ function wp_set_auth_cookie( $user_id, $remember = false, $secure = '', $token = */ do_action( 'set_logged_in_cookie', $logged_in_cookie, $expire, $expiration, $user_id, 'logged_in' ); + /** + * Allows preventing auth cookies from actually being sent to the client. + * + * @since 4.7.4 + * + * @param bool $send Whether to send auth cookies to the client. + */ + if ( ! apply_filters( 'send_auth_cookies', true ) ) { + return; + } + setcookie($auth_cookie_name, $auth_cookie, $expire, PLUGINS_COOKIE_PATH, COOKIE_DOMAIN, $secure, true); setcookie($auth_cookie_name, $auth_cookie, $expire, ADMIN_COOKIE_PATH, COOKIE_DOMAIN, $secure, true); setcookie(LOGGED_IN_COOKIE, $logged_in_cookie, $expire, COOKIEPATH, COOKIE_DOMAIN, $secure_logged_in_cookie, true); @@ -922,6 +933,17 @@ function wp_clear_auth_cookie() { */ do_action( 'clear_auth_cookie' ); + /** + * Allows preventing auth cookies from actually being sent to the client. + * + * @since 4.7.4 + * + * @param bool $send Whether to send auth cookies to the client. + */ + if ( ! apply_filters( 'send_auth_cookies', true ) ) { + return; + } + setcookie( AUTH_COOKIE, ' ', time() - YEAR_IN_SECONDS, ADMIN_COOKIE_PATH, COOKIE_DOMAIN ); setcookie( SECURE_AUTH_COOKIE, ' ', time() - YEAR_IN_SECONDS, ADMIN_COOKIE_PATH, COOKIE_DOMAIN ); setcookie( AUTH_COOKIE, ' ', time() - YEAR_IN_SECONDS, PLUGINS_COOKIE_PATH, COOKIE_DOMAIN ); diff --git a/wp-includes/version.php b/wp-includes/version.php index 6ab1e0c099..2860afba22 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -4,7 +4,7 @@ * * @global string $wp_version */ -$wp_version = '4.8-alpha-40259'; +$wp_version = '4.8-alpha-40263'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.