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>