Project

General

Profile

« Previous | Next » 

Revision 537fea99

Added by rhenium (Kazuki Yamaguchi) about 9 years ago

string.c: fix integer overflow in enc_strlen() and rb_enc_strlen_cr()

  • string.c (enc_strlen, rb_enc_strlen_cr): Avoid signed integer
    overflow. The result type of a pointer subtraction may have the same
    size as long. This fixes String#size returning an negative value on
    i686-linux environment:

    str = "\x00" * ((1<<31)-2))
    str.slice!(-3, 3)
    str.force_encoding("UTF-32BE")
    str << 1234
    p str.size

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56247 b2dd03c8-39d4-4d8f-98ff-823fe69b080e