Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F35474504
T307278.patch
mmartorana (manfredi martorana)
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Authored By
mmartorana
Aug 18 2022, 3:56 PM
2022-08-18 15:56:00 (UTC+0)
Size
2 KB
Referenced Files
None
Subscribers
None
T307278.patch
View Options
From 56a2582d67a17f776d8046a96455a442c660e57c Mon Sep 17 00:00:00 2001
From: Manfredi Martorana <mmartorana@wikimedia.org>
Date: Thu, 18 Aug 2022 17:53:34 +0200
Subject: [PATCH] T307278 - Remove suppressed usernames from rollback page.
---
includes/actions/RollbackAction.php | 17 +++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)
diff --git a/includes/actions/RollbackAction.php b/includes/actions/RollbackAction.php
index 935e9cf..17da6bd 100644
--- a/includes/actions/RollbackAction.php
+++ b/includes/actions/RollbackAction.php
@@ -28,6 +28,7 @@ use MediaWiki\Revision\RevisionRecord;
use MediaWiki\Revision\SlotRecord;
use MediaWiki\User\UserOptionsLookup;
use MediaWiki\Watchlist\WatchlistManager;
+use MediaWiki\MediaWikiServices;
/**
* User interface for the rollback action
@@ -157,7 +158,9 @@ class RollbackAction extends FormAction {
}
$revUser = $rev->getUser();
+
$userText = $revUser ? $revUser->getName() : '';
+
if ( $from !== $userText ) {
throw new ErrorPageError( 'rollbackfailed', 'alreadyrolled', [
$this->getTitle()->getPrefixedText(),
@@ -170,11 +173,17 @@ class RollbackAction extends FormAction {
throw new ErrorPageError( 'sessionfailure-title', 'sessionfailure' );
}
- // The revision has the user suppressed, so the rollback has empty 'from',
- // so the check above would succeed in that case.
+ # Check if the user has rights to view suppressed usernames
if ( !$revUser ) {
- $revUser = $rev->getUser( RevisionRecord::RAW );
- }
+ // T307278
+ if($this->getAuthority()->isAllowedAny( 'suppressrevision', 'viewsuppressed' ) ) {
+ $revUser = $rev->getUser( RevisionRecord::RAW );
+ } else {
+ $userFactory = MediaWikiServices::getInstance()->getUserFactory();
+
+ $revUser = $userFactory->newFromName( $this->context->msg( 'rev-deleted-user' )->escaped() );
+ }
+ }
$rollbackResult = $this->rollbackPageFactory
// @phan-suppress-next-line PhanTypeMismatchArgumentNullable use of raw avoids null here
--
2.32.1 (Apple Git-133)
File Metadata
Details
Attached
Mime Type
text/x-diff
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
9711164
Default Alt Text
T307278.patch (2 KB)
Attached To
Mode
T307278: CVE-2022-41766: On action=rollback the message "alreadyrolled" can leak revision deleted user name
Attached
Detach File
Event Timeline
Log In to Comment