Fixes #452. Solves a number of crashes caused by Regexp.new() on 1.9 without an explicit language specified
git-svn-id: file:///home/svn/framework3/trunk@7320 4d416f70-5f16-0410-b530-b9f4589650da
This commit is contained in:
parent
c0a0507fdf
commit
176996fe61
|
@ -254,3 +254,4 @@ module Msf
|
|||
end
|
||||
|
||||
end
|
||||
|
||||
|
|
|
@ -904,7 +904,7 @@ class Core
|
|||
end
|
||||
|
||||
begin
|
||||
regex = Regexp.new(match, true)
|
||||
regex = Regexp.new(match, true, 'n')
|
||||
rescue RegexpError => e
|
||||
print_error("Invalid regular expression: #{match} (hint: try .*)")
|
||||
return
|
||||
|
|
|
@ -56,7 +56,7 @@ module Msf
|
|||
|
||||
# Perform the search
|
||||
found = []
|
||||
filter = Regexp.new(text, Regexp::IGNORECASE)
|
||||
filter = Regexp.new(text, Regexp::IGNORECASE, 'n')
|
||||
|
||||
$gtk2driver.module_tree.refresh(filter)
|
||||
$gtk2driver.module_tree.expand
|
||||
|
|
|
@ -74,7 +74,7 @@ module Net # :nodoc:
|
|||
Net::DNS::RR::Classes.regexp +
|
||||
"|CLASS\\d+)?\\s*(" +
|
||||
Net::DNS::RR::Types.regexp +
|
||||
"|TYPE\\d+)?\\s*(.*)$", Regexp::IGNORECASE)
|
||||
"|TYPE\\d+)?\\s*(.*)$", Regexp::IGNORECASE, 'n')
|
||||
|
||||
# Dimension of the sum of class, type, TTL and rdlength fields in a
|
||||
# RR portion of the packet, in bytes
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
#!/usr/bin/env ruby
|
||||
|
||||
# $Id$
|
||||
|
||||
|
@ -58,7 +57,7 @@ class JmpRegScanner < Generic
|
|||
|
||||
regexstr += "\xff[#{jmps}]|([#{pushs1}]|\xff[#{pushs2}])(\xc3|\xc2..))"
|
||||
|
||||
self.regex = Regexp.new(regexstr)
|
||||
self.regex = Regexp.new(regexstr, nil, 'n')
|
||||
end
|
||||
|
||||
# build a list for regex of the possible bytes, based on a base
|
||||
|
@ -137,7 +136,7 @@ class PopPopRetScanner < JmpRegScanner
|
|||
|
||||
def config(param)
|
||||
pops = _build_byte_list(0x58, (0 .. 7).to_a - [4]) # we don't want pop esp's...
|
||||
self.regex = Regexp.new("[#{pops}][#{pops}](\xc3|\xc2..)")
|
||||
self.regex = Regexp.new("[#{pops}][#{pops}](\xc3|\xc2..)", nil, 'n')
|
||||
end
|
||||
|
||||
def scan_segment(program_header, param={})
|
||||
|
@ -172,7 +171,7 @@ end
|
|||
class RegexScanner < JmpRegScanner
|
||||
|
||||
def config(param)
|
||||
self.regex = Regexp.new(param['args'])
|
||||
self.regex = Regexp.new(param['args'], nil, 'n')
|
||||
end
|
||||
|
||||
def scan_segment(program_header, param={})
|
||||
|
@ -205,3 +204,4 @@ end
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -66,7 +66,7 @@ class JmpRegScanner < Generic
|
|||
|
||||
regexstr += "\xff[#{jmps}]|([#{pushs1}]|\xff[#{pushs2}])(\xc3|\xc2..))"
|
||||
|
||||
self.regex = Regexp.new(regexstr)
|
||||
self.regex = Regexp.new(regexstr, nil, 'n')
|
||||
end
|
||||
|
||||
# build a list for regex of the possible bytes, based on a base
|
||||
|
@ -145,7 +145,7 @@ class PopPopRetScanner < JmpRegScanner
|
|||
|
||||
def config(param)
|
||||
pops = _build_byte_list(0x58, (0 .. 7).to_a - [4]) # we don't want pop esp's...
|
||||
self.regex = Regexp.new("[#{pops}][#{pops}](\xc3|\xc2..)")
|
||||
self.regex = Regexp.new("[#{pops}][#{pops}](\xc3|\xc2..)", nil, 'n')
|
||||
end
|
||||
|
||||
def scan_segment(segment, param={})
|
||||
|
@ -181,7 +181,7 @@ end
|
|||
class RegexScanner < JmpRegScanner
|
||||
|
||||
def config(param)
|
||||
self.regex = Regexp.new(param['args'])
|
||||
self.regex = Regexp.new(param['args'], nil, 'n')
|
||||
end
|
||||
|
||||
def scan_segment(segment, param={})
|
||||
|
@ -214,3 +214,4 @@ end
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -58,7 +58,7 @@ module Analyze
|
|||
|
||||
@sigs.each_pair do |name, data|
|
||||
begin
|
||||
if (buf.match(Regexp.new('^' + data[0])))
|
||||
if (buf.match(Regexp.new('^' + data[0], nil, 'n')))
|
||||
$stdout.puts param['file'] + ": " + name
|
||||
end
|
||||
rescue RegexpError
|
||||
|
@ -237,7 +237,7 @@ module Analyze
|
|||
res = pe.resources[rkey]
|
||||
path = File.join(dest, rkey.split('/')[1] + '_' + res.file)
|
||||
|
||||
fd = File.new(path, 'w')
|
||||
fd = File.new(path, 'wb')
|
||||
fd.write(res.data)
|
||||
fd.close
|
||||
end
|
||||
|
@ -267,7 +267,7 @@ module Analyze
|
|||
path = File.join(dest, File.basename(param['file']) + ".map")
|
||||
end
|
||||
|
||||
fd = File.new(path, "w")
|
||||
fd = File.new(path, "wb")
|
||||
pe.all_sections.each do |section|
|
||||
|
||||
# Skip over known bad sections
|
||||
|
@ -278,7 +278,7 @@ module Analyze
|
|||
while offset < section.size
|
||||
byte = section.read(offset, 1)[0]
|
||||
if byte != 0
|
||||
chunkbase = pe.rva_to_vma( section.base_rva) + offset
|
||||
chunkbase = pe.rva_to_vma(section.base_rva) + offset
|
||||
data = ''
|
||||
while byte != 0
|
||||
data << byte
|
||||
|
@ -306,3 +306,4 @@ module Analyze
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -58,7 +58,7 @@ module Scanner
|
|||
|
||||
regexstr += "\xff[#{jmps}]|([#{pushs1}]|\xff[#{pushs2}])(\xc3|\xc2..))"
|
||||
|
||||
self.regex = Regexp.new(regexstr)
|
||||
self.regex = Regexp.new(regexstr, nil, 'n')
|
||||
end
|
||||
|
||||
# build a list for regex of the possible bytes, based on a base
|
||||
|
@ -137,7 +137,7 @@ module Scanner
|
|||
|
||||
def config(param)
|
||||
pops = _build_byte_list(0x58, (0 .. 7).to_a - [4]) # we don't want pop esp's...
|
||||
self.regex = Regexp.new("[#{pops}][#{pops}](\xc3|\xc2..)")
|
||||
self.regex = Regexp.new("[#{pops}][#{pops}](\xc3|\xc2..)", nil, 'n')
|
||||
end
|
||||
|
||||
def scan_section(section, param={})
|
||||
|
@ -171,7 +171,7 @@ module Scanner
|
|||
class RegexScanner < JmpRegScanner
|
||||
|
||||
def config(param)
|
||||
self.regex = Regexp.new(param['args'])
|
||||
self.regex = Regexp.new(param['args'], nil, 'n')
|
||||
end
|
||||
|
||||
def scan_section(section, param={})
|
||||
|
@ -203,3 +203,4 @@ module Scanner
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@ class Handle
|
|||
uuid_re = '[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}'
|
||||
rev_re = '\d+.\d+'
|
||||
proto_re = '(?:' + @@protocols.join('|') + ')'
|
||||
re = Regexp.new("(#{uuid_re}):(#{rev_re})\@(#{proto_re}):(.*?)\\[(.*)\\]$")
|
||||
re = Regexp.new("(#{uuid_re}):(#{rev_re})\@(#{proto_re}):(.*?)\\[(.*)\\]$", true, 'n')
|
||||
match = re.match(handle)
|
||||
raise ArgumentError if !match
|
||||
|
||||
|
|
|
@ -168,7 +168,7 @@ module Text
|
|||
# the regex the first time it is used and never check again. Since we
|
||||
# want to know how many to capture on every instance, we do it this
|
||||
# way.
|
||||
return str.unpack('H*')[0].gsub(Regexp.new(".{#{count * 2}}")) { |s| prefix + s }
|
||||
return str.unpack('H*')[0].gsub(Regexp.new(".{#{count * 2}}", nil, 'n')) { |s| prefix + s }
|
||||
end
|
||||
|
||||
#
|
||||
|
|
|
@ -465,7 +465,7 @@ module Zip
|
|||
end
|
||||
path = @file.expand_path(aDirectoryName).ensure_end("/")
|
||||
|
||||
subDirEntriesRegex = Regexp.new("^#{path}([^/]+)$")
|
||||
subDirEntriesRegex = Regexp.new("^#{path}([^/]+)$", nil, 'n')
|
||||
@mappedZip.each {
|
||||
|fileName|
|
||||
match = subDirEntriesRegex.match(fileName)
|
||||
|
|
|
@ -76,7 +76,7 @@ module Kernel #:nodoc:all
|
|||
end
|
||||
|
||||
def already_loaded?(moduleName)
|
||||
moduleRE = Regexp.new("^"+moduleName+"(\.rb|\.so|\.dll|\.o)?$")
|
||||
moduleRE = Regexp.new("^"+moduleName+"(\.rb|\.so|\.dll|\.o)?$", nil, 'n')
|
||||
$".detect { |e| e =~ moduleRE } != nil
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in New Issue