From a8266bd8310c76c17e0845b3a9afdee7b6b6593f Mon Sep 17 00:00:00 2001 From: HD Moore Date: Sun, 8 Jul 2012 11:25:32 -0500 Subject: [PATCH] Fix up odd reference normalization cases --- lib/rex/parser/nokogiri_doc_mixin.rb | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/lib/rex/parser/nokogiri_doc_mixin.rb b/lib/rex/parser/nokogiri_doc_mixin.rb index 10a1557c95..aad4ea779e 100644 --- a/lib/rex/parser/nokogiri_doc_mixin.rb +++ b/lib/rex/parser/nokogiri_doc_mixin.rb @@ -72,13 +72,26 @@ module Parser return if ref_type.nil? || ref_type.empty? || ref_value.nil? || ref_value.empty? ref_value = ref_value.strip ref_type = ref_type.strip.upcase + ret = case ref_type when "CVE" ref_value.gsub("CAN", "CVE") when "MS" - "MSB-MS-#{ref_value}" + if ref_value =~ /^MS[0-9]/ + "MSB-#{ref_value}" + else + "MSB-MS#{ref_value}" + end when "URL", "BID" "#{ref_type}-#{ref_value}" + when "APPLE" + ref_value + when "XF" + if ref_value =~ /\((\d+)\)$/ + "#{ref_type}-#{$1}" + else + "#{ref_type}-#{ref_value}" + end else # Handle others? "#{ref_type}-#{ref_value}" end @@ -89,6 +102,7 @@ module Parser return [] unless orig_refs refs = [] orig_refs.each do |ref_hash| + ref_hash_sym = Hash[ref_hash.map {|k, v| [k.to_sym, v] }] ref_type = ref_hash_sym[:source].to_s.strip.upcase ref_value = ref_hash_sym[:value].to_s.strip