Description: Don't allow unclosed html elements in attributes
 CVE-2015-5714
Author: nbachiyski@wordpress.org
Origin: upstream, https://core.trac.wordpress.org/changeset/34144/
Bug-Debian: https://bugs.debian.org/799140
Applied-Upstream: 4.3.1
Reviewed-by: Craig Small <csmall@debian.org>
Last-Update: 2015-09-19
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
--- a/wp-includes/media.php
+++ b/wp-includes/media.php
@@ -633,6 +633,8 @@
 			$content = $matches[1];
 			$attr['caption'] = trim( $matches[2] );
 		}
+	} elseif ( strpos( $attr['caption'], '<' ) !== false ) {
+		$attr['caption'] = wp_kses( $attr['caption'], 'post' );
 	}
 
 	// Allow plugins/themes to override the default caption template.
--- a/wp-includes/shortcodes.php
+++ b/wp-includes/shortcodes.php
@@ -458,6 +458,15 @@
 			elseif (isset($m[8]))
 				$atts[] = stripcslashes($m[8]);
 		}
+
+		// Reject any unclosed HTML elements
+		foreach( $atts as &$value ) {
+			if ( false !== strpos( $value, '<' ) ) {
+				if ( 1 !== preg_match( '/^[^<]*+(?:<[^>]*+>[^<]*+)*+$/', $value ) ) {
+					$value = '';
+				}
+			}
+		}
 	} else {
 		$atts = ltrim($text);
 	}
