WordPress.org

Make WordPress Core

Ticket #5917: 5917.diff

File 5917.diff, 1.9 KB (added by ryan, 10 years ago)
  • wp-includes/kses.php

     
    551551        $attrarr = array ();
    552552        $mode = 0;
    553553        $attrname = '';
     554        $uris = array('xmlns', 'profile', 'href', 'src', 'cite', 'classid', 'codebase', 'data', 'usemap', 'longdesc', 'action');
    554555
    555556        # Loop through the whole attribute list
    556557
     
    595596                                if (preg_match('/^"([^"]*)"(\s+|$)/', $attr, $match))
    596597                                        # "value"
    597598                                        {
    598                                         $thisval = wp_kses_bad_protocol($match[1], $allowed_protocols);
     599                                        $thisval = $match[1];
     600                                        if ( in_array($attrname, $uris) )               
     601                                                $thisval = wp_kses_bad_protocol($thisval, $allowed_protocols);
    599602
    600603                                        if(FALSE === array_key_exists($attrname, $attrarr)) {
    601604                                                $attrarr[$attrname] = array ('name' => $attrname, 'value' => $thisval, 'whole' => "$attrname=\"$thisval\"", 'vless' => 'n');
     
    609612                                if (preg_match("/^'([^']*)'(\s+|$)/", $attr, $match))
    610613                                        # 'value'
    611614                                        {
    612                                         $thisval = wp_kses_bad_protocol($match[1], $allowed_protocols);
     615                                        $thisval = $match[1];
     616                                        if ( in_array($attrname, $uris) )               
     617                                                $thisval = wp_kses_bad_protocol($thisval, $allowed_protocols);
    613618
    614619                                        if(FALSE === array_key_exists($attrname, $attrarr)) {
    615620                                                $attrarr[$attrname] = array ('name' => $attrname, 'value' => $thisval, 'whole' => "$attrname='$thisval'", 'vless' => 'n');
     
    623628                                if (preg_match("%^([^\s\"']+)(\s+|$)%", $attr, $match))
    624629                                        # value
    625630                                        {
    626                                         $thisval = wp_kses_bad_protocol($match[1], $allowed_protocols);
     631                                        $thisval = $match[1];
     632                                        if ( in_array($attrname, $uris) )               
     633                                                $thisval = wp_kses_bad_protocol($thisval, $allowed_protocols);
    627634
    628635                                        if(FALSE === array_key_exists($attrname, $attrarr)) {
    629636                                                $attrarr[$attrname] = array ('name' => $attrname, 'value' => $thisval, 'whole' => "$attrname=\"$thisval\"", 'vless' => 'n');