Issue #13034 has been updated by Tomoyuki Chikanaga.
Backport changed from 2.1: UNKNOWN, 2.2: DONE, 2.3: REQUIRED to 2.1: UNKNOWN, 2.2: DONE, 2.3: DONE
ruby_2_3 r57348 merged revision(s) 57078.
----------------------------------------
Bug #13034: rb_enc_ascget() does not handle 'needmore' error from rb_enc_procise_mbclen()
https://bugs.ruby-lang.org/issues/13034#change-62506
* Author: Kazuki Yamaguchi
* Status: Closed
* Priority: Normal
* Assignee:
* Target version:
* ruby -v:
* Backport: 2.1: UNKNOWN, 2.2: DONE, 2.3: DONE
----------------------------------------
rb_enc_ascget() stores the return value from rb_enc_procise_mbclen() that may return a negative value on error to 'unsigned int', and thus it overlooks errors due to incomplete UTF-16/32 byte sequence.
This bug is visible from Ruby; for example, the following code gets stuck in infinite loop:
~~~
str = "\x00".force_encoding("UTF-16BE")
Regexp.quote(str) # Ruby freezes
~~~
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>