Compare commits

...

20 Commits
3.8.3 ... 3.8.5

Author SHA1 Message Date
Andrew Nacin
b63b879b7c Tag 3.8.5.
Built from https://develop.svn.wordpress.org/@30488


git-svn-id: http://core.svn.wordpress.org/tags/3.8.5@30477 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 19:58:18 +00:00
Andrew Nacin
86dbc0e9f7 3.8.5 version bumps.
Built from https://develop.svn.wordpress.org/branches/3.8@30473


git-svn-id: http://core.svn.wordpress.org/branches/3.8@30464 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 16:26:19 +00:00
Andrew Nacin
81a07d58df Prevent high resource usage when hashing large passwords. props mdawaffe, pento
Merges [30466] to the 3.8 branch.

Built from https://develop.svn.wordpress.org/branches/3.8@30469


git-svn-id: http://core.svn.wordpress.org/branches/3.8@30460 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 16:07:10 +00:00
Andrew Nacin
a8ee34c745 Validate image data.
Merges [30458] to the 3.8 branch.

Built from https://develop.svn.wordpress.org/branches/3.8@30464


git-svn-id: http://core.svn.wordpress.org/branches/3.8@30455 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 15:59:10 +00:00
Andrew Nacin
e8613eb44a Anchor texturize to shortcodes to improve regex efficiency.
Merges [30452] to the 3.8 branch.

props miqrogroove.
see #29557 for segfault issues.

Built from https://develop.svn.wordpress.org/branches/3.8@30455


git-svn-id: http://core.svn.wordpress.org/branches/3.8@30446 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 14:37:10 +00:00
Andrew Nacin
10f8d67e1b Better validation of the URL used in core HTTP requests.
Merges [30443] to the 3.8 branch.

Built from https://develop.svn.wordpress.org/branches/3.8@30446


git-svn-id: http://core.svn.wordpress.org/branches/3.8@30441 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 14:02:23 +00:00
Andrew Nacin
b8f2bbf7d3 Press This: Ensure the error message is printed. props johnbillion
Merges [30438] to the 3.8 branch.

Built from https://develop.svn.wordpress.org/branches/3.8@30441


git-svn-id: http://core.svn.wordpress.org/branches/3.8@30436 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 14:00:10 +00:00
Andrew Nacin
916509ecd6 Invalidate password keys when a user's email changes.
Merges [30430] to the 3.8 branch.

Built from https://develop.svn.wordpress.org/branches/3.8@30433


git-svn-id: http://core.svn.wordpress.org/branches/3.8@30428 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 13:42:25 +00:00
Andrew Nacin
41c66d64fb Fix typo in style filter. props miqrogroove
Merges [30425] to the 3.8 branch.

Built from https://develop.svn.wordpress.org/branches/3.8@30428


git-svn-id: http://core.svn.wordpress.org/branches/3.8@30423 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 13:16:52 +00:00
Andrew Nacin
fb7b89a23d Form validation for password resets.
Merges [30417] to the 3.8 branch.

Built from https://develop.svn.wordpress.org/branches/3.8@30420


git-svn-id: http://core.svn.wordpress.org/branches/3.8@30415 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 12:25:11 +00:00
Andrew Nacin
2a05a279fd Use hash_equals() for old md5 hashes.
Merges [30412] to the 3.8 branch.

Built from https://develop.svn.wordpress.org/branches/3.8@30415


git-svn-id: http://core.svn.wordpress.org/branches/3.8@30410 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 12:05:11 +00:00
Andrew Nacin
57e6b6e116 Password resets: Use network_site_url() for form actions.
Merges [29631] to the 3.8 branch.

props mdawaffe.
fixes #29156.

Built from https://develop.svn.wordpress.org/branches/3.8@29639


git-svn-id: http://core.svn.wordpress.org/branches/3.8@29413 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-08-27 03:05:10 +00:00
Andrew Nacin
78d0ddfa36 3.8.4
Built from https://develop.svn.wordpress.org/branches/3.8@29412


git-svn-id: http://core.svn.wordpress.org/branches/3.8@29190 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-08-06 18:27:27 +00:00
Andrew Nacin
fafada01b7 Use delimiters when building nonce hashes. Part two of [29386].
Built from https://develop.svn.wordpress.org/branches/3.8@29409


git-svn-id: http://core.svn.wordpress.org/branches/3.8@29187 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-08-06 17:58:11 +00:00
Andrew Nacin
7f5fcb184b Ignore entities in XML-RPC requests.
Merges [29404] to the 3.8 branch.

props mdawaffe, nacin.

Built from https://develop.svn.wordpress.org/branches/3.8@29406


git-svn-id: http://core.svn.wordpress.org/branches/3.8@29184 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-08-06 17:51:11 +00:00
Andrew Nacin
8905d8bda9 Escape late in get_avatar().
Merges [29397] to the 3.8 branch.

Built from https://develop.svn.wordpress.org/branches/3.8@29399


git-svn-id: http://core.svn.wordpress.org/branches/3.8@29177 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-08-06 07:51:25 +00:00
Andrew Nacin
1282f9b034 Don't pass around the password reset key.
Merges [29327] and [29381] to the 3.9 branch.

props mdawaffe.
fixes #29060.

Built from https://develop.svn.wordpress.org/branches/3.8@29395


git-svn-id: http://core.svn.wordpress.org/branches/3.8@29173 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-08-06 06:38:13 +00:00
Andrew Nacin
1f14360fe8 Disable external entities in ID3.
Merges [29378] to the 3.8 branch.

Built from https://develop.svn.wordpress.org/branches/3.8@29391


git-svn-id: http://core.svn.wordpress.org/branches/3.8@29169 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-08-06 05:58:10 +00:00
Andrew Nacin
72d44b2fce Constant time for wp_verify_nonce().
Merges [29384] to the 3.8 branch.

Built from https://develop.svn.wordpress.org/branches/3.8@29386


git-svn-id: http://core.svn.wordpress.org/branches/3.8@29164 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-08-06 05:43:22 +00:00
Andrew Nacin
f9bf8f0886 3.8.4-alpha
Built from https://develop.svn.wordpress.org/branches/3.8@29385


git-svn-id: http://core.svn.wordpress.org/branches/3.8@29163 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-08-06 05:43:12 +00:00
15 changed files with 180 additions and 31 deletions

View File

@@ -9,7 +9,7 @@
<body>
<h1 id="logo">
<a href="http://wordpress.org/"><img alt="WordPress" src="wp-admin/images/wordpress-logo.png" /></a>
<br /> Version 3.8.3
<br /> Version 3.8.5
</h1>
<p style="text-align: center">Semantic Personal Publishing Platform</p>

View File

@@ -39,7 +39,15 @@ include( ABSPATH . 'wp-admin/admin-header.php' );
</h2>
<div class="changelog point-releases">
<h3><?php echo _n( 'Maintenance and Security Release', 'Maintenance and Security Releases', 3 ); ?></h3>
<h3><?php echo _n( 'Maintenance and Security Release', 'Maintenance and Security Releases', 4 ); ?></h3>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed a security issue.',
'<strong>Version %1$s</strong> addressed some security issues.', 8 ), '3.8.5', number_format_i18n( 8 ) ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'http://codex.wordpress.org/Version_3.8.5' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed a security issue.',
'<strong>Version %1$s</strong> addressed some security issues.', 5 ), '3.8.4', number_format_i18n( 5 ) ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'http://codex.wordpress.org/Version_3.8.4' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed %2$s bug.',
'<strong>Version %1$s</strong> addressed %2$s bugs.', 2 ), '3.8.3', number_format_i18n( 2 ) ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'http://codex.wordpress.org/Version_3.8.3' ); ?>

View File

@@ -316,6 +316,12 @@ function wp_read_image_metadata( $file ) {
$meta[ $key ] = utf8_encode( $meta[ $key ] );
}
foreach ( $meta as &$value ) {
if ( is_string( $value ) ) {
$value = wp_kses_post( $value );
}
}
return apply_filters( 'wp_read_image_metadata', $meta, $file, $sourceImageType );
}

View File

@@ -65,7 +65,7 @@ function press_it() {
// error handling for media_sideload
if ( is_wp_error($upload) ) {
wp_delete_post($post_ID);
wp_die($upload);
wp_die( esc_html( $upload->get_error_message() ) );
} else {
// Post formats
if ( isset( $_POST['post_format'] ) ) {

View File

@@ -519,11 +519,12 @@ class getid3_lib
}
public static function XML2array($XMLstring) {
if (function_exists('simplexml_load_string')) {
if (function_exists('get_object_vars')) {
$XMLobject = simplexml_load_string($XMLstring);
return self::SimpleXMLelement2array($XMLobject);
}
if ( function_exists( 'simplexml_load_string' ) && function_exists( 'libxml_disable_entity_loader' ) ) {
$loader = libxml_disable_entity_loader( true );
$XMLobject = simplexml_load_string( $XMLstring, 'SimpleXMLElement', LIBXML_NOENT );
$return = self::SimpleXMLelement2array( $XMLobject );
libxml_disable_entity_loader( $loader );
return $return;
}
return false;
}

View File

@@ -203,11 +203,37 @@ class IXR_Message
{
// first remove the XML declaration
// merged from WP #10698 - this method avoids the RAM usage of preg_replace on very large messages
$header = preg_replace( '/<\?xml.*?\?'.'>/', '', substr($this->message, 0, 100), 1);
$this->message = substr_replace($this->message, $header, 0, 100);
if (trim($this->message) == '') {
$header = preg_replace( '/<\?xml.*?\?'.'>/s', '', substr( $this->message, 0, 100 ), 1 );
$this->message = trim( substr_replace( $this->message, $header, 0, 100 ) );
if ( '' == $this->message ) {
return false;
}
// Then remove the DOCTYPE
$header = preg_replace( '/^<!DOCTYPE[^>]*+>/i', '', substr( $this->message, 0, 200 ), 1 );
$this->message = trim( substr_replace( $this->message, $header, 0, 200 ) );
if ( '' == $this->message ) {
return false;
}
// Check that the root tag is valid
$root_tag = substr( $this->message, 0, strcspn( substr( $this->message, 0, 20 ), "> \t\r\n" ) );
if ( '<!DOCTYPE' === strtoupper( $root_tag ) ) {
return false;
}
if ( ! in_array( $root_tag, array( '<methodCall', '<methodResponse', '<fault' ) ) ) {
return false;
}
// Bail if there are too many elements to parse
$element_limit = 30000;
if ( function_exists( 'apply_filters' ) ) {
$element_limit = apply_filters( 'xmlrpc_element_limit', $element_limit );
}
if ( $element_limit && 2 * $element_limit < substr_count( $this->message, '<' ) ) {
return false;
}
$this->_parser = xml_parser_create();
// Set XML parser to take the case of tags in to account
xml_parser_set_option($this->_parser, XML_OPTION_CASE_FOLDING, false);

View File

@@ -214,6 +214,10 @@ class PasswordHash {
function HashPassword($password)
{
if ( strlen( $password ) > 4096 ) {
return '*';
}
$random = '';
if (CRYPT_BLOWFISH == 1 && !$this->portable_hashes) {
@@ -249,6 +253,10 @@ class PasswordHash {
function CheckPassword($password, $stored_hash)
{
if ( strlen( $password ) > 4096 ) {
return false;
}
$hash = $this->crypt_private($password, $stored_hash);
if ($hash[0] == '*')
$hash = crypt($password, $stored_hash);

View File

@@ -94,3 +94,32 @@ if ( !function_exists('json_decode') ) {
return is_array($data) ? array_map(__FUNCTION__, $data) : $data;
}
}
if ( ! function_exists( 'hash_equals' ) ) :
/**
* Compare two strings in constant time.
*
* This function was added in PHP 5.6.
* It can leak the length of a string.
*
* @since 3.9.2
*
* @param string $a Expected string.
* @param string $b Actual string.
* @return bool Whether strings are equal.
*/
function hash_equals( $a, $b ) {
$a_length = strlen( $a );
if ( $a_length !== strlen( $b ) ) {
return false;
}
$result = 0;
// Do not attempt to "optimize" this.
for ( $i = 0; $i < $a_length; $i++ ) {
$result |= ord( $a[ $i ] ) ^ ord( $b[ $i ] );
}
return $result === 0;
}
endif;

View File

@@ -121,7 +121,14 @@ function wptexturize($text) {
$no_texturize_tags_stack = array();
$no_texturize_shortcodes_stack = array();
$textarr = preg_split('/(<.*>|\[.*\])/Us', $text, -1, PREG_SPLIT_DELIM_CAPTURE);
// Look for shortcodes and HTML elements.
$shortcode_regex =
'\[' // Find start of shortcode.
. '[^\[\]<>]++' // Shortcodes do not contain other shortcodes. Possessive critical.
. '\]'; // Find end of shortcode.
$textarr = preg_split("/(<[^>]*>|$shortcode_regex)/s", $text, -1, PREG_SPLIT_DELIM_CAPTURE);
foreach ( $textarr as &$curl ) {
if ( empty( $curl ) )
@@ -131,7 +138,7 @@ function wptexturize($text) {
$first = $curl[0];
if ( '<' === $first ) {
_wptexturize_pushpop_element($curl, $no_texturize_tags_stack, $no_texturize_tags, '<', '>');
} elseif ( '[' === $first ) {
} elseif ( '[' === $first && 1 === preg_match( '/^' . $shortcode_regex . '$/', $curl ) ) {
_wptexturize_pushpop_element($curl, $no_texturize_shortcodes_stack, $no_texturize_shortcodes, '[', ']');
} elseif ( empty($no_texturize_shortcodes_stack) && empty($no_texturize_tags_stack) ) {
// This is not a tag, nor is the texturization disabled static strings
@@ -172,6 +179,8 @@ function _wptexturize_pushpop_element($text, &$stack, $disabled_elements, $openi
array_push($stack, $matches[1]);
}
} elseif ( 0 == count( $stack ) ) {
// Stack is empty. Just stop.
} else {
// Closing? Check $text+2 against disabled elements
$c = preg_quote($closing, '/');

View File

@@ -451,8 +451,9 @@ function send_origin_headers() {
* @return mixed URL or false on failure.
*/
function wp_http_validate_url( $url ) {
$original_url = $url;
$url = wp_kses_bad_protocol( $url, array( 'http', 'https' ) );
if ( ! $url )
if ( ! $url || strtolower( $url ) !== strtolower( $original_url ) )
return false;
$parsed_url = @parse_url( $url );
@@ -462,7 +463,7 @@ function wp_http_validate_url( $url ) {
if ( isset( $parsed_url['user'] ) || isset( $parsed_url['pass'] ) )
return false;
if ( false !== strpos( $parsed_url['host'], ':' ) )
if ( false !== strpbrk( $parsed_url['host'], ':#?[]' ) )
return false;
$parsed_home = @parse_url( get_option( 'home' ) );
@@ -480,8 +481,7 @@ function wp_http_validate_url( $url ) {
}
if ( $ip ) {
$parts = array_map( 'intval', explode( '.', $ip ) );
if ( '127.0.0.1' === $ip
|| ( 10 === $parts[0] )
if ( 127 === $parts[0] || 10 === $parts[0]
|| ( 172 === $parts[0] && 16 <= $parts[1] && 31 >= $parts[1] )
|| ( 192 === $parts[0] && 168 === $parts[1] )
) {

View File

@@ -1407,7 +1407,7 @@ function safecss_filter_attr( $css, $deprecated = '' ) {
$css = wp_kses_no_null($css);
$css = str_replace(array("\n","\r","\t"), '', $css);
if ( preg_match( '%[\\(&=}]|/\*%', $css ) ) // remove any inline css containing \ ( & } = or comments
if ( preg_match( '%[\\\\(&=}]|/\*%', $css ) ) // remove any inline css containing \ ( & } = or comments
return '';
$css_array = explode( ';', trim( $css ) );

View File

@@ -543,7 +543,7 @@ function wp_validate_auth_cookie($cookie = '', $scheme = '') {
$key = wp_hash($username . $pass_frag . '|' . $expiration, $scheme);
$hash = hash_hmac('md5', $username . '|' . $expiration, $key);
if ( hash_hmac( 'md5', $hmac, $key ) !== hash_hmac( 'md5', $hash, $key ) ) {
if ( ! hash_equals( $hash, $hmac ) ) {
do_action('auth_cookie_bad_hash', $cookie_elements);
return false;
}
@@ -1342,11 +1342,17 @@ function wp_verify_nonce($nonce, $action = -1) {
$i = wp_nonce_tick();
// Nonce generated 0-12 hours ago
if ( substr(wp_hash($i . $action . $uid, 'nonce'), -12, 10) === $nonce )
$expected = substr( wp_hash( $i . '|' . $action . '|' . $uid, 'nonce'), -12, 10 );
if ( hash_equals( $expected, $nonce ) ) {
return 1;
}
// Nonce generated 12-24 hours ago
if ( substr(wp_hash(($i - 1) . $action . $uid, 'nonce'), -12, 10) === $nonce )
$expected = substr( wp_hash( ( $i - 1 ) . '|' . $action . '|' . $uid, 'nonce' ), -12, 10 );
if ( hash_equals( $expected, $nonce ) ) {
return 2;
}
// Invalid nonce
return false;
}
@@ -1369,7 +1375,7 @@ function wp_create_nonce($action = -1) {
$i = wp_nonce_tick();
return substr(wp_hash($i . $action . $uid, 'nonce'), -12, 10);
return substr(wp_hash($i . '|' . $action . '|' . $uid, 'nonce'), -12, 10);
}
endif;
@@ -1531,7 +1537,7 @@ function wp_check_password($password, $hash, $user_id = '') {
// If the hash is still md5...
if ( strlen($hash) <= 32 ) {
$check = ( $hash == md5($password) );
$check = hash_equals( $hash, md5( $password ) );
if ( $check && $user_id ) {
// Rehash using new hash.
wp_set_password($password, $user_id);
@@ -1749,7 +1755,8 @@ function get_avatar( $id_or_email, $size = '96', $default = '', $alt = false ) {
$out = str_replace( '&#038;', '&amp;', esc_url( $out ) );
$avatar = "<img alt='{$safe_alt}' src='{$out}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
} else {
$avatar = "<img alt='{$safe_alt}' src='{$default}' class='avatar avatar-{$size} photo avatar-default' height='{$size}' width='{$size}' />";
$out = esc_url( $default );
$avatar = "<img alt='{$safe_alt}' src='{$out}' class='avatar avatar-{$size} photo avatar-default' height='{$size}' width='{$size}' />";
}
return apply_filters('get_avatar', $avatar, $id_or_email, $size, $default, $alt);
@@ -1830,3 +1837,35 @@ function wp_text_diff( $left_string, $right_string, $args = null ) {
}
endif;
if ( ! function_exists( 'hash_equals' ) ) :
/**
* Compare two strings in constant time.
*
* This function is NOT pluggable. It is in this file (in addition to
* compat.php) to prevent errors if, during an update, pluggable.php
* copies over but compat.php does not.
*
* This function was added in PHP 5.6.
* It can leak the length of a string.
*
* @since 3.9.2
*
* @param string $a Expected string.
* @param string $b Actual string.
* @return bool Whether strings are equal.
*/
function hash_equals( $a, $b ) {
$a_length = strlen( $a );
if ( $a_length !== strlen( $b ) ) {
return false;
}
$result = 0;
// Do not attempt to "optimize" this.
for ( $i = 0; $i < $a_length; $i++ ) {
$result |= ord( $a[ $i ] ) ^ ord( $b[ $i ] );
}
return $result === 0;
}
endif;

View File

@@ -1409,6 +1409,9 @@ function wp_insert_user( $userdata ) {
$data = wp_unslash( $data );
if ( $update ) {
if ( $user_email !== $old_user_data->user_email ) {
$data['user_activation_key'] = '';
}
$wpdb->update( $wpdb->users, $data, compact( 'ID' ) );
$user_id = (int) $ID;
} else {

View File

@@ -4,7 +4,7 @@
*
* @global string $wp_version
*/
$wp_version = '3.8.3';
$wp_version = '3.8.5';
/**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.

View File

@@ -524,7 +524,7 @@ case 'retrievepassword' :
?>
<form name="lostpasswordform" id="lostpasswordform" action="<?php echo esc_url( site_url( 'wp-login.php?action=lostpassword', 'login_post' ) ); ?>" method="post">
<form name="lostpasswordform" id="lostpasswordform" action="<?php echo esc_url( network_site_url( 'wp-login.php?action=lostpassword', 'login_post' ) ); ?>" method="post">
<p>
<label for="user_login" ><?php _e('Username or E-mail:') ?><br />
<input type="text" name="user_login" id="user_login" class="input" value="<?php echo esc_attr($user_login); ?>" size="20" /></label>
@@ -563,10 +563,28 @@ break;
case 'resetpass' :
case 'rp' :
$user = check_password_reset_key($_GET['key'], $_GET['login']);
list( $rp_path ) = explode( '?', wp_unslash( $_SERVER['REQUEST_URI'] ) );
$rp_cookie = 'wp-resetpass-' . COOKIEHASH;
if ( isset( $_GET['key'] ) ) {
$value = sprintf( '%s:%s', wp_unslash( $_GET['login'] ), wp_unslash( $_GET['key'] ) );
setcookie( $rp_cookie, $value, 0, $rp_path, COOKIE_DOMAIN, is_ssl(), true );
wp_safe_redirect( remove_query_arg( array( 'key', 'login' ) ) );
exit;
}
if ( is_wp_error($user) ) {
if ( $user->get_error_code() === 'expired_key' )
if ( isset( $_COOKIE[ $rp_cookie ] ) && 0 < strpos( $_COOKIE[ $rp_cookie ], ':' ) ) {
list( $rp_login, $rp_key ) = explode( ':', wp_unslash( $_COOKIE[ $rp_cookie ] ), 2 );
$user = check_password_reset_key( $rp_key, $rp_login );
if ( isset( $_POST['pass1'] ) && ! hash_equals( $rp_key, $_POST['rp_key'] ) ) {
$user = false;
}
} else {
$user = false;
}
if ( ! $user || is_wp_error( $user ) ) {
setcookie( $rp_cookie, ' ', time() - YEAR_IN_SECONDS, $rp_path, COOKIE_DOMAIN, is_ssl(), true );
if ( $user && $user->get_error_code() === 'expired_key' )
wp_redirect( site_url( 'wp-login.php?action=lostpassword&error=expiredkey' ) );
else
wp_redirect( site_url( 'wp-login.php?action=lostpassword&error=invalidkey' ) );
@@ -590,6 +608,7 @@ case 'rp' :
if ( ( ! $errors->get_error_code() ) && isset( $_POST['pass1'] ) && !empty( $_POST['pass1'] ) ) {
reset_password($user, $_POST['pass1']);
setcookie( $rp_cookie, ' ', time() - YEAR_IN_SECONDS, $rp_path, COOKIE_DOMAIN, is_ssl(), true );
login_header( __( 'Password Reset' ), '<p class="message reset-pass">' . __( 'Your password has been reset.' ) . ' <a href="' . esc_url( wp_login_url() ) . '">' . __( 'Log in' ) . '</a></p>' );
login_footer();
exit;
@@ -601,8 +620,8 @@ case 'rp' :
login_header(__('Reset Password'), '<p class="message reset-pass">' . __('Enter your new password below.') . '</p>', $errors );
?>
<form name="resetpassform" id="resetpassform" action="<?php echo esc_url( site_url( 'wp-login.php?action=resetpass&key=' . urlencode( $_GET['key'] ) . '&login=' . urlencode( $_GET['login'] ), 'login_post' ) ); ?>" method="post" autocomplete="off">
<input type="hidden" id="user_login" value="<?php echo esc_attr( $_GET['login'] ); ?>" autocomplete="off" />
<form name="resetpassform" id="resetpassform" action="<?php echo esc_url( network_site_url( 'wp-login.php?action=resetpass', 'login_post' ) ); ?>" method="post" autocomplete="off">
<input type="hidden" id="user_login" value="<?php echo esc_attr( $rp_login ); ?>" autocomplete="off" />
<p>
<label for="pass1"><?php _e('New password') ?><br />
@@ -617,6 +636,7 @@ case 'rp' :
<p class="description indicator-hint"><?php _e('Hint: The password should be at least seven characters long. To make it stronger, use upper and lower case letters, numbers and symbols like ! " ? $ % ^ &amp; ).'); ?></p>
<br class="clear" />
<input type="hidden" name="rp_key" value="<?php echo esc_attr( $rp_key ); ?>" />
<p class="submit"><input type="submit" name="wp-submit" id="wp-submit" class="button button-primary button-large" value="<?php esc_attr_e('Reset Password'); ?>" /></p>
</form>