WordPress.org

Make WordPress Core

Ticket #5917: 5917.diff

File 5917.diff, 1.9 KB (added by ryan, 6 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');