mirror of
https://github.com/ruby/ruby.git
synced 2025-08-24 21:44:30 +02:00
regparse.c: initialize return values
* regparse.c (parse_char_class): initialize return values before depth limit check. returned values will be freed in callers regardless the error. [ruby-core:79624] [Bug #13234] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57660 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
f28de8c06a
commit
ea940cc4dc
5 changed files with 57 additions and 1 deletions
|
@ -1198,6 +1198,25 @@ class TestRegexp < Test::Unit::TestCase
|
|||
RUBY
|
||||
end
|
||||
|
||||
def test_invalid_free_at_parse_depth_limit_over
|
||||
assert_separately([], "#{<<-"begin;"}\n#{<<-"end;"}")
|
||||
begin;
|
||||
begin
|
||||
require '-test-/regexp'
|
||||
rescue LoadError
|
||||
else
|
||||
bug = '[ruby-core:79624] [Bug #13234]'
|
||||
Bug::Regexp.parse_depth_limit = 10
|
||||
src = "[" * 100
|
||||
3.times do
|
||||
assert_raise_with_message(RegexpError, /parse depth limit over/, bug) do
|
||||
Regexp.new(src)
|
||||
end
|
||||
end
|
||||
end
|
||||
end;
|
||||
end
|
||||
|
||||
# This assertion is for porting x2() tests in testpy.py of Onigmo.
|
||||
def assert_match_at(re, str, positions, msg = nil)
|
||||
re = Regexp.new(re) unless re.is_a?(Regexp)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue