From 30a07f037ef9ff43515a6ebd44cb2d76a10e43d8 Mon Sep 17 00:00:00 2001 From: erwanlr Date: Thu, 14 Aug 2014 17:42:08 +0200 Subject: [PATCH] Fixes #661 - Don't hash directories named like a file --- lib/wpstools/plugins/checker/checker_plugin.rb | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/wpstools/plugins/checker/checker_plugin.rb b/lib/wpstools/plugins/checker/checker_plugin.rb index 8a139338..d325ab4c 100644 --- a/lib/wpstools/plugins/checker/checker_plugin.rb +++ b/lib/wpstools/plugins/checker/checker_plugin.rb @@ -82,17 +82,19 @@ class CheckerPlugin < Plugin end def check_local_vulnerable_files(dir_to_scan) - if Dir::exist?(dir_to_scan) + if Dir.exist?(dir_to_scan) xml_file = LOCAL_FILES_FILE local_hashes = {} file_extension_to_scan = '*.{js,php,swf,html,htm}' print '[+] Generating local hashes ... ' - Dir[File::join(dir_to_scan, '**', file_extension_to_scan)].each do |filename| + Dir[File.join(dir_to_scan, '**', file_extension_to_scan)] + .select { |f| File.file?(f) } + .each do |filename| sha1sum = Digest::SHA1.file(filename).hexdigest - if local_hashes.has_key?(sha1sum) + if local_hashes.key?(sha1sum) local_hashes[sha1sum] << filename else local_hashes[sha1sum] = [filename]