Verbose Bug fix and pattern loading optimization

Verbose flag was not proceeding with the next scan due to !found being set.  Added a check to see if it is verbose when it decides to do the next scan.

Patterns should be loaded once and only once.  The files aren't large so not a problem with memory, however it might impact performance if we are loading the same 3 files ever time we scan a file.
This commit is contained in:
nichogenius
2017-08-16 01:29:58 -06:00
committed by GitHub
parent b4e09e682a
commit 575278613e

View File

@@ -38,6 +38,10 @@ class MalwareScanner
); );
private $followSymlink = false; private $followSymlink = false;
private $patterns_raw = array();
private $patterns_iraw = array();
private $patterns_re = array();
public function __construct() public function __construct()
{ {
$options = getopt('he:i:kwxd:lv', array('help', 'extension:', 'ignore:', 'hide-ok', 'hide-whitelist', 'extra-check', 'directory:', 'follow-symlink', 'verbose')); $options = getopt('he:i:kwxd:lv', array('help', 'extension:', 'ignore:', 'hide-ok', 'hide-whitelist', 'extra-check', 'directory:', 'follow-symlink', 'verbose'));
@@ -170,11 +174,14 @@ class MalwareScanner
$found = false; $found = false;
$hash = ''; $hash = '';
$toSearch = ''; $toSearch = '';
$patterns = $this->loadPatterns(dirname(__FILE__) . '/patterns_raw.txt'); $this->patterns_raw = $this->loadPatterns(dirname(__FILE__) . '/patterns_raw.txt');
$this->patterns_iraw = $this->loadPatterns(dirname(__FILE__) . '/patterns_iraw.txt');
$this->patterns_re = $this->loadPatterns(dirname(__FILE__) . '/patterns_re.txt');
if ($this->extraCheck) { if ($this->extraCheck) {
array_push($patterns, "googleBot", "htaccess"); array_push($this->patterns_raw, "googleBot", "htaccess");
} }
foreach ($patterns as $toSearch) { foreach ($this->patterns_raw as $toSearch) {
if (!$toSearch) { if (!$toSearch) {
continue; continue;
} }
@@ -193,9 +200,8 @@ class MalwareScanner
} }
} }
if (!$found) { if (!$found || $this->verbose) {
$patterns = $this->loadPatterns(dirname(__FILE__) . '/patterns_iraw.txt'); foreach ($this->patterns_iraw as $toSearch) {
foreach ($patterns as $toSearch) {
if (!$toSearch) { if (!$toSearch) {
continue; continue;
} }
@@ -215,9 +221,8 @@ class MalwareScanner
} }
} }
if (!$found) { if (!$found || $this->verbose) {
$patterns = $this->loadPatterns(dirname(__FILE__) . '/patterns_re.txt'); foreach ($this->patterns_re as $toSearch) {
foreach ($patterns as $toSearch) {
if (!$toSearch) { if (!$toSearch) {
continue; continue;
} }