Make WordPress Core

Ticket #57322: 57322.diff

File 57322.diff, 3.5 KB (added by david.binda, 2 years ago)
  • src/wp-includes/kses.php

     
    25282528                        }
    25292529                }
    25302530
    2531                 if ( $found && $gradient_attr ) {
    2532                         $css_value = trim( $parts[1] );
    2533                         if ( preg_match( '/^(repeating-)?(linear|radial|conic)-gradient\(([^()]|rgb[a]?\([^()]*\))*\)$/', $css_value ) ) {
    2534                                 // Remove the whole `gradient` bit that was matched above from the CSS.
    2535                                 $css_test_string = str_replace( $css_value, '', $css_test_string );
    2536                         }
    2537                 }
    2538 
    25392531                if ( $found ) {
    25402532                        /*
    25412533                         * Allow CSS functions like var(), calc(), etc. by removing them from the test string.
     
    25462538                                '',
    25472539                                $css_test_string
    25482540                        );
     2541                }
    25492542
     2543                if ( $found && $gradient_attr ) {
     2544                        $css_value = trim( $parts[1] );
     2545                        if ( preg_match( '/(repeating-)?(linear|radial|conic)-gradient\(([^()]|rgb[a]?\([^()]*\))*\)/', $css_test_string ) ) {
     2546                                // Remove the whole `gradient` bit that was matched above from the CSS.
     2547                                $css_test_string = preg_replace(
     2548                                        '/(repeating-)?(linear|radial|conic)-gradient\(([^()]|rgb[a]?\([^()]*\))*\)/',
     2549                                        '',
     2550                                        $css_test_string
     2551                                );
     2552                        }
     2553                }
     2554
     2555                if ( $found ) {
    25502556                        /*
    25512557                         * Disallow CSS containing \ ( & } = or comments, except for within url(), var(), calc(), etc.
    25522558                         * which were removed from the test string above.
  • tests/phpunit/tests/kses.php

     
    12781278                                'css'      => '--?><.%-not-allowed: red;',
    12791279                                'expected' => '',
    12801280                        ),
     1281                        // Stacked gradients.
     1282                        array(
     1283                                'css'      => 'background: radial-gradient(circle at 5px 5px,#0c0d0d70 2px,#ffffff00 0px,#ffffff00 0px) 0 0 / 8px 8px, linear-gradient(180deg, #345345 0%,#000000 200%)',
     1284                                'expected' => 'background: radial-gradient(circle at 5px 5px,#0c0d0d70 2px,#ffffff00 0px,#ffffff00 0px) 0 0 / 8px 8px, linear-gradient(180deg, #345345 0%,#000000 200%)',
     1285                        ),
     1286                        // Stacked grandients with a CSS variable.
     1287                        array(
     1288                                'css'      => 'background: radial-gradient(circle at 5px 5px,#0c0d0d70 2px,#ffffff00 0px,#ffffff00 0px) 0 0 / 8px 8px, linear-gradient(180deg, var(--wp--preset--color--base) 0%,#000000 200%)',
     1289                                'expected' => 'background: radial-gradient(circle at 5px 5px,#0c0d0d70 2px,#ffffff00 0px,#ffffff00 0px) 0 0 / 8px 8px, linear-gradient(180deg, var(--wp--preset--color--base) 0%,#000000 200%)',
     1290                        ),
     1291                        array(
     1292                                'css'      => '--wp--preset--gradient--dots: radial-gradient(circle at 5px 5px,#0c0d0d70 2px,#ffffff00 0px,#ffffff00 0px) 0 0 / 8px 8px, linear-gradient(180deg, var(--wp--preset--color--base) 0%,#000000 200%)',
     1293                                'expected' => '--wp--preset--gradient--dots: radial-gradient(circle at 5px 5px,#0c0d0d70 2px,#ffffff00 0px,#ffffff00 0px) 0 0 / 8px 8px, linear-gradient(180deg, var(--wp--preset--color--base) 0%,#000000 200%)',
     1294                        ),
     1295                        // Malformed stacked gradients, no closing `)`
     1296                        array(
     1297                                'css'      => 'background: radial-gradient(circle at 5px 5px,#0c0d0d70 2px,#ffffff00 0px,#ffffff00 0px) 0 0 / 8px 8px, linear-gradient(180deg, #345345 0%,#000000 200%',
     1298                                'expected' => '',
     1299                        ),
     1300                        // Malformed stacked gradients, mismatching brackets.
     1301                        array(
     1302                                'css'      => 'background: radial-gradient(circle at 5px 5px,#0c0d0d70 2px,#ffffff00 0px,#ffffff00 0px) 0 0 / 8px 8px, ( linear-gradient(180deg, #345345 0%,#000000 200%)',
     1303                                'expected' => '',
     1304                        ),
    12811305                );
    12821306        }
    12831307