jenkins-bot has submitted this change and it was merged.
Change subject: Reset $wgTitle in AbuseFilter::filterAction()
......................................................................
Reset $wgTitle in AbuseFilter::filterAction()
If AbuseFilter::filterAction changed $wgTitle, we need to reset it back
to the old value before returning.
And for good measure, we also need to check the main RequestContext to
make sure it didn't cache the bogus $wgTitle on us.
Bug: 53498
Change-Id: I4d706a1ee07f0b171f98e7d558d7be27e6759614
---
M AbuseFilter.class.php
1 file changed, 42 insertions(+), 29 deletions(-)
Approvals:
CSteipp: Looks good to me, approved
jenkins-bot: Verified
diff --git a/AbuseFilter.class.php b/AbuseFilter.class.php
index 8cfed93..f41cbc7 100644
--- a/AbuseFilter.class.php
+++ b/AbuseFilter.class.php
@@ -837,6 +837,10 @@
wfProfileIn( __METHOD__ );
+ $context = RequestContext::getMain();
+ $oldContextTitle = $context->getTitle();
+
+ $oldWgTitle = $wgTitle;
if ( !$wgTitle ) {
$wgTitle = SpecialPage::getTitleFor( 'AbuseFilter' );
}
@@ -854,39 +858,48 @@
$matched_filters = array_keys( array_filter( $filter_matched )
);
- // Short-cut any remaining code if no filters were hit.
if ( count( $matched_filters ) == 0 ) {
- wfProfileOut( __METHOD__ );
- return Status::newGood();
+ $status = Status::newGood();
+ } else {
+ wfProfileIn( __METHOD__ . '-block' );
+
+ $status = self::executeFilterActions(
+ $matched_filters, $title, $vars );
+
+ $actions_taken = $status->value; // getValue() was
introduced only in 1.20
+
+ $action = $vars->getVar( 'ACTION' )->toString();
+
+ // Create a template
+ $log_template = array(
+ 'afl_user' => $wgUser->getId(),
+ 'afl_user_text' => $wgUser->getName(),
+ 'afl_timestamp' => $dbr->timestamp(
wfTimestampNow() ),
+ 'afl_namespace' => $title->getNamespace(),
+ 'afl_title' => $title->getDBkey(),
+ 'afl_ip' => $wgRequest->getIP()
+ );
+
+ // Hack to avoid revealing IPs of people creating
accounts
+ if ( !$wgUser->getId() && ( $action == 'createaccount'
|| $action == 'autocreateaccount' ) ) {
+ $log_template['afl_user_text'] = $vars->getVar(
'accountname' )->toString();
+ }
+
+ self::addLogEntries( $actions_taken, $log_template,
$action, $vars, $group );
+
+ wfProfileOut( __METHOD__ . '-block' );
}
- wfProfileIn( __METHOD__ . '-block' );
-
- $status = self::executeFilterActions(
- $matched_filters, $title, $vars );
-
- $actions_taken = $status->value; // getValue() was introduced
only in 1.20
-
- $action = $vars->getVar( 'ACTION' )->toString();
-
- // Create a template
- $log_template = array(
- 'afl_user' => $wgUser->getId(),
- 'afl_user_text' => $wgUser->getName(),
- 'afl_timestamp' => $dbr->timestamp( wfTimestampNow() ),
- 'afl_namespace' => $title->getNamespace(),
- 'afl_title' => $title->getDBkey(),
- 'afl_ip' => $wgRequest->getIP()
- );
-
- // Hack to avoid revealing IPs of people creating accounts
- if ( !$wgUser->getId() && ( $action == 'createaccount' ||
$action == 'autocreateaccount' ) ) {
- $log_template['afl_user_text'] = $vars->getVar(
'accountname' )->toString();
+ // Bug 53498: If we screwed around with $wgTitle, reset it so
the title
+ // is correctly picked up from the request later. Do the same
for the
+ // main RequestContext, because that might have picked up the
bogus
+ // title from $wgTitle.
+ if ( $wgTitle !== $oldWgTitle ) {
+ $wgTitle = $oldWgTitle;
}
-
- self::addLogEntries( $actions_taken, $log_template, $action,
$vars, $group );
-
- wfProfileOut( __METHOD__ . '-block' );
+ if ( $context->getTitle() !== $oldContextTitle ) {
+ $context->setTitle( $oldContextTitle );
+ }
wfProfileOut( __METHOD__ );
--
To view, visit https://gerrit.wikimedia.org/r/86707
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I4d706a1ee07f0b171f98e7d558d7be27e6759614
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/AbuseFilter
Gerrit-Branch: master
Gerrit-Owner: Anomie <[email protected]>
Gerrit-Reviewer: Aaron Schulz <[email protected]>
Gerrit-Reviewer: CSteipp <[email protected]>
Gerrit-Reviewer: Hoo man <[email protected]>
Gerrit-Reviewer: jenkins-bot
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits