diff --git a/src/wp-includes/formatting.php b/src/wp-includes/formatting.php
index e0b45fd0a3..2fa1c523a0 100644
--- a/src/wp-includes/formatting.php
+++ b/src/wp-includes/formatting.php
@@ -3706,7 +3706,6 @@ function sanitize_option( $option, $value ) {
if ( is_wp_error( $value ) ) {
$error = $value->get_error_message();
} else {
- $value = wp_kses_post( $value );
$value = esc_html( $value );
}
break;
diff --git a/tests/phpunit/tests/formatting/BlogInfo.php b/tests/phpunit/tests/formatting/BlogInfo.php
index 9611bc635b..4f7febb5a5 100644
--- a/tests/phpunit/tests/formatting/BlogInfo.php
+++ b/tests/phpunit/tests/formatting/BlogInfo.php
@@ -31,4 +31,43 @@ class Tests_Formatting_BlogInfo extends WP_UnitTestCase {
array( 'pt_PT_ao1990', 'pt-PT-ao1990' ),
);
}
+
+ /**
+ * @ticket 27942
+ */
+ function test_bloginfo_sanitize_option() {
+ $old_values = array(
+ 'blogname' => get_option( 'blogname' ),
+ 'blogdescription' => get_option( 'blogdescription' ),
+ );
+
+ $values = array(
+ 'foo' => 'foo',
+ 'foo' => '<em>foo</em>',
+ '' => '<script>foo</script>',
+ '<foo>' => '<foo>',
+ ' '<foo',
+ );
+
+ foreach ( $values as $value => $expected ) {
+ $sanitized_value = sanitize_option( 'blogname', $value );
+ update_option( 'blogname', $sanitized_value );
+
+ $this->assertEquals( $expected, $sanitized_value );
+ $this->assertEquals( $expected, get_bloginfo( 'name' ) );
+ $this->assertEquals( $expected, get_bloginfo( 'name', 'display' ) );
+
+ $sanitized_value = sanitize_option( 'blogdescription', $value );
+ update_option( 'blogdescription', $sanitized_value );
+
+ $this->assertEquals( $expected, $sanitized_value );
+ $this->assertEquals( $expected, get_bloginfo( 'description' ) );
+ $this->assertEquals( $expected, get_bloginfo( 'description', 'display' ) );
+ }
+
+ // Restore old values.
+ foreach ( $old_values as $option_name => $value ) {
+ update_option( $option_name, $value );
+ }
+ }
}