[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