From: Gergő Tisza Date: Wed, 14 Jun 2017 21:01:31 +0000 (+0200) Subject: Fix enhanced RC data attribute sanitizing X-Git-Tag: 1.31.0-rc.0~2934^2 X-Git-Url: http://git.cyclocoop.org/data/Luca_Pacioli_%28Gemaelde%29.jpeg?a=commitdiff_plain;h=94749fa62e95407fc82d9875caf5434a97d4620f;p=lhc%2Fweb%2Fwiklou.git Fix enhanced RC data attribute sanitizing We push 'class' in the attribute array so the hook can manipulate it, so it needs to be added to the attribute whitelist as well. Broken in I6dd006d0b1b0fd35c0020f0f9eea9113eca30b35. Bug: T167922 Bug: T167535 Change-Id: Ic24400382a9dcbb990e12dfddae4ab7db14553cc --- diff --git a/includes/changes/EnhancedChangesList.php b/includes/changes/EnhancedChangesList.php index 03f63f673f..d977457fcc 100644 --- a/includes/changes/EnhancedChangesList.php +++ b/includes/changes/EnhancedChangesList.php @@ -686,7 +686,9 @@ class EnhancedChangesList extends ChangesList { } $attribs = $data['attribs']; unset( $data['attribs'] ); - $attribs = wfArrayFilterByKey( $attribs, [ Sanitizer::class, 'isReservedDataAttribute' ] ); + $attribs = wfArrayFilterByKey( $attribs, function( $key ) { + return $key === 'class' || Sanitizer::isReservedDataAttribute( $key ); + } ); $line = Html::openElement( 'table', $attribs ) . Html::openElement( 'tr' ); $line .= ''; diff --git a/tests/phpunit/includes/changes/EnhancedChangesListTest.php b/tests/phpunit/includes/changes/EnhancedChangesListTest.php index 029d1fe386..28818d9b47 100644 --- a/tests/phpunit/includes/changes/EnhancedChangesListTest.php +++ b/tests/phpunit/includes/changes/EnhancedChangesListTest.php @@ -99,7 +99,7 @@ class EnhancedChangesListTest extends MediaWikiLangTestCase { $enhancedChangesList->recentChangesLine( $recentChange, false ); $html = $enhancedChangesList->endRecentChangesList(); - $this->assertContains( 'data-mw-revid="5"', $html ); + $this->assertRegExp( '/data-mw-revid="5" class="[^"]*mw-enhanced-rc[^"]*"/', $html ); $recentChange2 = $this->getEditChange( '20131103092253' ); $enhancedChangesList->recentChangesLine( $recentChange2, false );