Bug #19750
closedRuby hangs when parsing Regexp with unterminated unicode "/\u{"
Description
Ruby hangs up for a while and gets failed to allocate memory (NoMemoryError)
$ ruby -e "/\\u{"
ruby: failed to allocate memory (NoMemoryError)
RubyVM::AbstractSyntaxTree.parse "/\\u{"
# => SyntaxError
RubyVM::AbstractSyntaxTree.parse "/\\u{\n"
# => failed to allocate memory (NoMemoryError)
Updated by mame (Yusuke Endoh) over 1 year ago
- Related to Bug #18294: error when parsing regexp comment added
Updated by mame (Yusuke Endoh) over 1 year ago
- Status changed from Open to Assigned
- Assignee set to jeremyevans0 (Jeremy Evans)
According to git bisect, this is since ec3542229b29ec93062e9d90e877ea29d3c19472. @jeremyevans0 (Jeremy Evans) Could you take a look at this issue?
Updated by jeremyevans0 (Jeremy Evans) over 1 year ago
mame (Yusuke Endoh) wrote in #note-2:
According to git bisect, this is since ec3542229b29ec93062e9d90e877ea29d3c19472. @jeremyevans0 (Jeremy Evans) Could you take a look at this issue?
Sure, I'll take a look today.
Updated by jeremyevans0 (Jeremy Evans) over 1 year ago
I submitted a pull request to fix this: https://github.com/ruby/ruby/pull/8003
Updated by jeremyevans (Jeremy Evans) over 1 year ago
- Status changed from Assigned to Closed
Applied in changeset git|1bc8838d60ef3fc6812d3b64ed87caaf0ae943d9.
Handle unterminated unicode escapes in regexps
This fixes an infinite loop possible after ec3542229b29ec93062e9d90e877ea29d3c19472.
For \u{} escapes in regexps, skip validation in the parser, and rely on the regexp
code to handle validation. This is necessary so that invalid unicode escapes in
comments in extended regexps are allowed.
Fixes [Bug #19750]
Co-authored-by: Nobuyoshi Nakada nobu@ruby-lang.org
Updated by nagachika (Tomoyuki Chikanaga) over 1 year ago
- Backport changed from 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN to 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: REQUIRED
Updated by nagachika (Tomoyuki Chikanaga) over 1 year ago
- Backport changed from 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: REQUIRED to 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: DONE
ruby_3_2 3f6187a94797d3c4a7db00563a885e4e613b51cf merged revision(s) 1bc8838d60ef3fc6812d3b64ed87caaf0ae943d9.