From 95800ae4f213c35878c330606d71d555f4c8cc51 Mon Sep 17 00:00:00 2001 From: Andrew Nacin Date: Fri, 21 Jun 2013 03:00:26 +0000 Subject: [PATCH] Validate post password hash. git-svn-id: http://core.svn.wordpress.org/trunk@24466 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/post-template.php | 13 +++++-------- wp-login.php | 9 +++------ 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/wp-includes/post-template.php b/wp-includes/post-template.php index e767ea8d71..6c812c52ea 100644 --- a/wp-includes/post-template.php +++ b/wp-includes/post-template.php @@ -588,8 +588,6 @@ function get_body_class( $class = '' ) { * @return bool false if a password is not required or the correct password cookie is present, true otherwise. */ function post_password_required( $post = null ) { - global $wp_hasher; - $post = get_post($post); if ( empty( $post->post_password ) ) @@ -598,15 +596,14 @@ function post_password_required( $post = null ) { if ( ! isset( $_COOKIE['wp-postpass_' . COOKIEHASH] ) ) return true; - if ( empty( $wp_hasher ) ) { - require_once( ABSPATH . 'wp-includes/class-phpass.php'); - // By default, use the portable hash from phpass - $wp_hasher = new PasswordHash(8, true); - } + require_once ABSPATH . 'wp-includes/class-phpass.php'; + $hasher = new PasswordHash( 8, true ); $hash = wp_unslash( $_COOKIE[ 'wp-postpass_' . COOKIEHASH ] ); + if ( 0 !== strpos( $hash, '$P$B' ) ) + return true; - return ! $wp_hasher->CheckPassword( $post->post_password, $hash ); + return ! $hasher->CheckPassword( $post->post_password, $hash ); } /** diff --git a/wp-login.php b/wp-login.php index ddde661667..b6751e5d11 100644 --- a/wp-login.php +++ b/wp-login.php @@ -407,14 +407,11 @@ $interim_login = isset($_REQUEST['interim-login']); switch ($action) { case 'postpass' : - if ( empty( $wp_hasher ) ) { - require_once( ABSPATH . 'wp-includes/class-phpass.php' ); - // By default, use the portable hash from phpass - $wp_hasher = new PasswordHash(8, true); - } + require_once ABSPATH . 'wp-includes/class-phpass.php'; + $hasher = new PasswordHash( 8, true ); // 10 days - setcookie( 'wp-postpass_' . COOKIEHASH, $wp_hasher->HashPassword( wp_unslash( $_POST['post_password'] ) ), time() + 10 * DAY_IN_SECONDS, COOKIEPATH ); + setcookie( 'wp-postpass_' . COOKIEHASH, $hasher->HashPassword( wp_unslash( $_POST['post_password'] ) ), time() + 10 * DAY_IN_SECONDS, COOKIEPATH ); wp_safe_redirect( wp_get_referer() ); exit();