From 1aa242a9d85c785eedf610ebf5cdc0b6dcd9f111 Mon Sep 17 00:00:00 2001 From: erwanlr Date: Fri, 1 Nov 2019 15:20:46 +0000 Subject: [PATCH] Avoids duplicates in finding the same thing diffrent pages --- lib/wpscan/finders/dynamic_finder/wp_items/finder.rb | 5 ++++- spec/shared_examples/dynamic_finders/wp_items.rb | 9 +++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/wpscan/finders/dynamic_finder/wp_items/finder.rb b/lib/wpscan/finders/dynamic_finder/wp_items/finder.rb index ee460103..ebcea17f 100644 --- a/lib/wpscan/finders/dynamic_finder/wp_items/finder.rb +++ b/lib/wpscan/finders/dynamic_finder/wp_items/finder.rb @@ -34,7 +34,10 @@ module WPScan [target.homepage_res, target.error_404_res].each do |page_res| item = process_response(opts, page_res, slug, klass, config) - found << item if item.is_a?(Model::WpItem) + if item.is_a?(Model::WpItem) + found << item + break # No need to check the other page if detected in the current + end end end end diff --git a/spec/shared_examples/dynamic_finders/wp_items.rb b/spec/shared_examples/dynamic_finders/wp_items.rb index c30c6b18..a03eb6ce 100644 --- a/spec/shared_examples/dynamic_finders/wp_items.rb +++ b/spec/shared_examples/dynamic_finders/wp_items.rb @@ -68,6 +68,15 @@ shared_examples WPScan::Finders::DynamicFinder::WpItems::Finder do expect(finder.passive).to match_array(expected_items.map { |item| eql(item) }) end end + + context 'from both the homepage and 404' do + let(:homepage_body) { File.read(passive_fixture) } + let(:error_404_body) { File.read(passive_fixture) } + + it 'does not contains the same finding twice (but from different page)' do + expect(finder.passive).to match_array(expected_items.map { |item| eql(item) }) + end + end end end