mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/AbuseFilter.git
synced 2024-11-27 15:30:42 +00:00
Fix weird bug occurring in corrupted databases.
This commit is contained in:
parent
26597d4257
commit
334582b645
|
@ -288,7 +288,7 @@ class AFPUserVisibleException extends AFPException {
|
|||
}
|
||||
|
||||
class AbuseFilterParser {
|
||||
var $mParams, $mVars, $mCode, $mTokens, $mPos, $mCur;
|
||||
var $mParams, $mVars, $mCode, $mTokens, $mPos, $mCur, $mSubexpressions, $mDebug;
|
||||
|
||||
// length,lcase,ccnorm,rmdoubles,specialratio,rmspecials,norm,count
|
||||
static $mFunctions = array(
|
||||
|
@ -341,6 +341,8 @@ class AbuseFilterParser {
|
|||
$this->mTokens = array();
|
||||
$this->mVars = new AbuseFilterVariableHolder;
|
||||
$this->mPos = 0;
|
||||
$this->mDebug = false;
|
||||
$this->mSubexpressions = array();
|
||||
}
|
||||
|
||||
public function checkSyntax( $filter ) {
|
||||
|
@ -411,6 +413,28 @@ class AbuseFilterParser {
|
|||
return ( strlen($a) < strlen($b) ) ? -1 : 1;
|
||||
}
|
||||
|
||||
protected function createSubexpression( $value, $tokens, $type = null ) {
|
||||
if ($type)
|
||||
$data = new AFPData( $type, $value );
|
||||
else
|
||||
$data = AFPData::newFromPHPVar( $value );
|
||||
|
||||
if (!$this->mDebug)
|
||||
return $data;
|
||||
|
||||
if (!$this->mSubexpressions)
|
||||
$this->mSubexpressions = array();
|
||||
|
||||
$thisData = array(
|
||||
'tokens' => $tokens,
|
||||
'value' => $data,
|
||||
);
|
||||
|
||||
$this->mSubexpressions[] = $thisData;
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
/* Levels */
|
||||
|
||||
/** Handles unexpected characters after the expression */
|
||||
|
|
|
@ -218,6 +218,11 @@ class AFComputedVariable {
|
|||
$cutOff = $parameters['cutoff'];
|
||||
$title = Title::makeTitle( $parameters['namespace'], $parameters['title'] );
|
||||
|
||||
if (!$title->exists()) {
|
||||
$result = '';
|
||||
break;
|
||||
}
|
||||
|
||||
$dbr = wfGetDB( DB_SLAVE );
|
||||
$res = $dbr->select( 'revision', 'distinct rev_user_text',
|
||||
array(
|
||||
|
|
Loading…
Reference in a new issue