[or-cvs] r11227: bugfixes (in topf/trunk: . lib)

benedikt at seul.org benedikt at seul.org
Mon Aug 20 18:16:27 UTC 2007


Author: benedikt
Date: 2007-08-20 14:16:27 -0400 (Mon, 20 Aug 2007)
New Revision: 11227

Modified:
   topf/trunk/lib/fuzz.rb
   topf/trunk/tor-dir-fuzz.rb
Log:
bugfixes

Modified: topf/trunk/lib/fuzz.rb
===================================================================
--- topf/trunk/lib/fuzz.rb	2007-08-20 17:02:04 UTC (rev 11226)
+++ topf/trunk/lib/fuzz.rb	2007-08-20 18:16:27 UTC (rev 11227)
@@ -4,6 +4,9 @@
     def insert!(index, inject)
         self.clone.insert(index, inject)
     end
+    def to_regexp
+        self.to_s.gsub("{", "\{").gsub("}", "\}").gsub("[", "\[").gsub("]", "\]").gsub("(", "\(").gsub(")", "\)")
+    end
 end
 
 module Fuzz
@@ -46,6 +49,9 @@
             raise "no tests have been added yet" if !@prepared
             args[:fuzz_index] = @fuzz_index
             resultString, @fuzz_index = to_s( args )
+            if @fuzz_index == @structs.size
+                raise "finished all tests"
+            end
             @number_of_tests-=1
             [ resultString, @number_of_tests]
         end
@@ -346,6 +352,7 @@
             @http_direction = args[:http_direction]
             @http_url       = args[:http_url]
             @observer       = args[:observer]
+            @coremanager    = @observer.coremanager
             args[:timeout] ? @timeout = args[:timeout] : @timeout = 0.2
 
             Fuzz::LOGGER.level = Logger::INFO if !args[:debug]
@@ -354,6 +361,7 @@
         end
 
         def send( data )
+            begin
             case @type
                 when :http
                     case @http_direction
@@ -365,6 +373,18 @@
                 else
                     @socket.write data
             end
+            rescue Exception => exception
+                if @coremanager.new_corefile?
+                    puts "argument:\n%s \nkilled the application!" % data 
+                    puts "backtrace:"
+                    puts @coremanager.get_latest_backtrace
+                    puts "_"*40
+                    puts "registers:"
+                    puts @coremanager.get_latest_registers
+                    puts "writing POC"
+                end
+                Kernel::exit
+            end
         end
 
         def fuzz!(structs, join_character="", args={})
@@ -376,7 +396,7 @@
                     data = struct.join( join_character )
                     Fuzz::LOGGER.debug "sending data: %s" % data
                     self.send data
-                    assert(args[:assert] )
+                    #assert(args[:assert] )
                 }
             end
             raise "finished all tests"
@@ -386,7 +406,7 @@
         def assert(reply = [])
             begin
                 timeout(@timeout) do 
-                    reply_data = Regexp.new( @socket.readline() )
+                    reply_data = Regexp.new( @socket.readline().to_regexp )
                     raise "ASSERTION %s FAILED\nreceived %s" % [ reply.join(","), reply_data] if !reply.find_all{|x| x=~ reply_data}
                 end
             rescue Exception
@@ -395,7 +415,7 @@
         end
 
         def close
-            @socket.close
+            @socket.close if @type != :http && @type != :tls
         end
 private
         def connect

Modified: topf/trunk/tor-dir-fuzz.rb
===================================================================
--- topf/trunk/tor-dir-fuzz.rb	2007-08-20 17:02:04 UTC (rev 11226)
+++ topf/trunk/tor-dir-fuzz.rb	2007-08-20 18:16:27 UTC (rev 11227)
@@ -15,7 +15,8 @@
         :type   => :http,
         :http_direction => :post,
         :http_url       => "/tor/",
-        :debug => config["DEBUG"] 
+        :debug => config["DEBUG"],
+        :observer => observer
     }
 
     osslkey = OpenSSL::PKey::RSA.new(1024)



More information about the tor-commits mailing list