lib/rex/parser/ip360_aspl_xml.rb in librex-0.0.68 vs lib/rex/parser/ip360_aspl_xml.rb in librex-0.0.70
- old
+ new
@@ -5,99 +5,99 @@
module Rex
module Parser
class IP360ASPLXMLStreamParser
-
- @vulnid = nil
- @appid = nil
- @location = nil
- attr_accessor :on_found_aspl
+ @vulnid = nil
+ @appid = nil
+ @location = nil
- def initialize(&block)
- reset_state
- on_found_aspl = block if block
- end
+ attr_accessor :on_found_aspl
- def reset_state
- @aspl = {'vulns' => {'name' => { }, 'cve' => { }, 'bid' => { } },
- 'oses' => {'name' => { } } }
- @state = :generic_state
- end
+ def initialize(&block)
+ reset_state
+ on_found_aspl = block if block
+ end
- def tag_start(name, attributes)
- case name
- when "vulns"
- @location = "vulns"
- when "vuln"
- @vulnid = attributes['id'].strip
- when "name"
- @state = :is_name
- when "advisories"
- @c = ""
- @cfirst = 1
- @b = ""
- @bfirst = 1
- @x = Hash.new
- when "publisher"
- @state = :is_pub
- when "id"
- @state = :is_refid
- when "operatingSystems"
- @location = "os"
- when "operatingSystem"
- @osid = attributes['id'].strip
- end
- end
-
- def text(str)
- case @state
- when :is_name
- @aspl['vulns']['name'][@vulnid] = str if @location == "vulns"
- @aspl['oses'][@osid] = str if @location == "os"
- when :is_pub
- @x['pub'] = str
- when :is_refid
- @x['refid'] = str
- end
- end
+ def reset_state
+ @aspl = {'vulns' => {'name' => { }, 'cve' => { }, 'bid' => { } },
+ 'oses' => {'name' => { } } }
+ @state = :generic_state
+ end
- def tag_end(name)
- case name
- when "ontology"
- on_found_aspl.call(@aspl) if on_found_aspl
- reset_state
- when "advisory"
- if (@x['pub'] =~ /CVE/)
- if (@cfirst == 0)
- @c += ","
- end
- @c += @x['refid']
- @cfirst = 0
- elsif (@x['pub'] =~ /BugTraq/)
- if (@bfirst == 0)
- @b += ","
- end
- @b += @x['refid']
- @bfirst = 0
- end
- when "advisories"
- @aspl['vulns']['cve'][@vulnid] = @c
- @aspl['vulns']['bid'][@vulnid] = @b
- @c = ""
- @b = ""
- end
- @state = :generic_state
- end
+ def tag_start(name, attributes)
+ case name
+ when "vulns"
+ @location = "vulns"
+ when "vuln"
+ @vulnid = attributes['id'].strip
+ when "name"
+ @state = :is_name
+ when "advisories"
+ @c = ""
+ @cfirst = 1
+ @b = ""
+ @bfirst = 1
+ @x = Hash.new
+ when "publisher"
+ @state = :is_pub
+ when "id"
+ @state = :is_refid
+ when "operatingSystems"
+ @location = "os"
+ when "operatingSystem"
+ @osid = attributes['id'].strip
+ end
+ end
- # We don't need these methods, but they're necessary to keep REXML happy
- #
- def xmldecl(version, encoding, standalone); end
- def cdata; end
- def comment(str); end
- def instruction(name, instruction); end
- def attlist; end
+ def text(str)
+ case @state
+ when :is_name
+ @aspl['vulns']['name'][@vulnid] = str if @location == "vulns"
+ @aspl['oses'][@osid] = str if @location == "os"
+ when :is_pub
+ @x['pub'] = str
+ when :is_refid
+ @x['refid'] = str
+ end
+ end
+
+ def tag_end(name)
+ case name
+ when "ontology"
+ on_found_aspl.call(@aspl) if on_found_aspl
+ reset_state
+ when "advisory"
+ if (@x['pub'] =~ /CVE/)
+ if (@cfirst == 0)
+ @c += ","
+ end
+ @c += @x['refid']
+ @cfirst = 0
+ elsif (@x['pub'] =~ /BugTraq/)
+ if (@bfirst == 0)
+ @b += ","
+ end
+ @b += @x['refid']
+ @bfirst = 0
+ end
+ when "advisories"
+ @aspl['vulns']['cve'][@vulnid] = @c
+ @aspl['vulns']['bid'][@vulnid] = @b
+ @c = ""
+ @b = ""
+ end
+ @state = :generic_state
+ end
+
+ # We don't need these methods, but they're necessary to keep REXML happy
+ #
+ def xmldecl(version, encoding, standalone); end
+ def cdata; end
+ def comment(str); end
+ def instruction(name, instruction); end
+ def attlist; end
end
end
end