<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -9,4 +9,6 @@ classification :name =&gt; 'Compromised'
 
 localize :name =&gt; 'localhost', :cidr =&gt; '127.0.0.1/32', :as =&gt; 'Local'
 
-user :name =&gt; '', :locations =&gt; ['Local']
\ No newline at end of file
+user :name =&gt; '', :locations =&gt; ['Local']
+
+plugin :id =&gt; 0, :name =&gt; 'Port Scanner', :category =&gt; 'scanners', :family =&gt; 'Port scanners', :risk =&gt; 'None', :summary =&gt; 'Scans for open ports.'</diff>
      <filename>db/fixtures/setup.rb</filename>
    </modified>
    <modified>
      <diff>@@ -89,4 +89,25 @@ module FixtureHelpers
     subnet.location_id        = options[:location_id]
     subnet.save!
   end
+  
+  def plugin(options)
+    options[:family_id] = Family.find_or_create_by_name(options[:family]) if options[:family]
+    options[:risk_id]   = Risk.find_or_create_by_name(options[:risk]) if options[:risk]
+    
+    fail unless options[:id] &amp;&amp;
+                options[:name] &amp;&amp;
+                options[:category] &amp;&amp;
+                options[:family_id] &amp;&amp;
+                options[:risk_id] &amp;&amp;
+                options[:summary]
+    
+    plugin            = Plugin.new
+    plugin.id         = options[:id]
+    plugin.name       = options[:name]
+    plugin.category   = options[:category]
+    plugin.family_id  = options[:family_id]
+    plugin.risk_id    = options[:risk_id]
+    plugin.summary    = options[:summary]
+    plugin.save!
+  end
 end
\ No newline at end of file</diff>
      <filename>lib/fixture_helpers.rb</filename>
    </modified>
    <modified>
      <diff>@@ -99,9 +99,9 @@ module Nessus
   def self.process(scan, nessus_file, plugins_file)
     # Parse results
     scan.puts(&quot;Parsing results in #{nessus_file}...&quot;)
-
+    
     nessus_report = NessusReport.parse(XML::Document.file(nessus_file))
-
+    
     # Parse plugins
     scan.puts(&quot;Parsing plugins in #{plugins_file}...&quot;)
     
@@ -111,13 +111,13 @@ module Nessus
       nessus_plugin = NessusPlugin.parse(scan, line)
       
       next unless nessus_plugin
-
+      
       nessus_plugins[nessus_plugin.id] = nessus_plugin
     end
-
+    
     # Import results
     scan.puts(&quot;Importing #{nessus_report.hosts.size} hosts...&quot;)
-
+    
     nessus_report.hosts.each do |nessus_host|
       scan.hosts.new do |host|
         host.name       = nessus_host.name
@@ -125,16 +125,16 @@ module Nessus
         host.scan_start = nessus_host.scan_start
         host.scan_end   = nessus_host.scan_end
         host.save!
-    
+        
         nessus_host.vulnerabilities.each do |nessus_vulnerability|
           host.vulnerabilities.new do |vulnerability|
-            nessus_plugin = nessus_plugins[nessus_vulnerability.plugin_id]
-            
-            fail &quot;Couldn't find plugin #{nessus_vulnerability.plugin_id} referenced by vulnerability!&quot; unless nessus_plugin
+            plugin = Plugin.find_by_id(nessus_vulnerability.plugin_id)
             
-            plugin = Plugin.find_by_id(nessus_plugin.id)
-
             unless plugin
+              nessus_plugin = nessus_plugins[nessus_vulnerability.plugin_id]
+              
+              fail &quot;Couldn't find plugin #{nessus_vulnerability.plugin_id} referenced by vulnerability!&quot; unless nessus_plugin
+              
               Plugin.new do |plugin|
                 plugin.id       = nessus_plugin.id
                 plugin.name     = nessus_plugin.name</diff>
      <filename>lib/nessus.rb</filename>
    </modified>
    <modified>
      <diff>@@ -16,7 +16,7 @@ namespace :db do
   task :rebuild =&gt; :environment do
     Rake::Task['db:drop'].invoke
     Rake::Task['db:create'].invoke
-    Rake::Task['db:migrate'].invoke
+    Rake::Task['db:schema:load'].invoke
     Rake::Task['db:populate'].invoke
   end
 end</diff>
      <filename>lib/tasks/db.rake</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>a31cc86b925374e51de1c2103afba07779b498d0</id>
    </parent>
  </parents>
  <author>
    <name>Cory T. Cornelius</name>
    <email>Cory.T.Cornelius@Dartmouth.edu</email>
  </author>
  <url>http://github.com/dxoigmn/achilles/commit/65b8aec6dbddcd7ac0d317cce8d87e11dfedbd2e</url>
  <id>65b8aec6dbddcd7ac0d317cce8d87e11dfedbd2e</id>
  <committed-date>2009-03-05T14:42:49-08:00</committed-date>
  <authored-date>2009-03-05T14:42:49-08:00</authored-date>
  <message>Fix bug in parsing Nessus results when pluginId = 0.</message>
  <tree>26a45964e8d7c4b296a56d97ee1eeca8cce6a097</tree>
  <committer>
    <name>Cory T. Cornelius</name>
    <email>Cory.T.Cornelius@Dartmouth.edu</email>
  </committer>
</commit>
