1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

merge revision(s) 53083: [Backport #11823]

* io.c (parse_mode_enc): fix buffer overflow.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_1@53148 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
usa 2015-12-16 07:14:32 +00:00
parent 703a24a947
commit 7abafeb92d
4 changed files with 23 additions and 4 deletions

View file

@ -1,3 +1,7 @@
Wed Dec 16 16:13:04 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
* io.c (parse_mode_enc): fix buffer overflow.
Wed Dec 16 16:10:52 2015 Eric Wong <e@80x24.org>
* insns.def (opt_case_dispatch): avoid converting Infinity

8
io.c
View file

@ -5059,9 +5059,11 @@ parse_mode_enc(const char *estr, rb_encoding **enc_p, rb_encoding **enc2_p, int
fmode |= FMODE_SETENC_BY_BOM;
estr += 4;
len -= 4;
memcpy(encname, estr, len);
encname[len] = '\0';
estr = encname;
if (len > 0 && len <= ENCODING_MAXNAMELEN) {
memcpy(encname, estr, len);
encname[len] = '\0';
estr = encname;
}
}
idx = rb_enc_find_index(estr);
}

View file

@ -2073,6 +2073,19 @@ EOT
}
end
def test_bom_too_long_utfname
assert_separately([], <<-'end;') # do
assert_warn(/Unsupported encoding/) {
open(IO::NULL, "r:bom|utf-" + "x" * 10000) {}
}
end;
assert_separately([], <<-'end;') # do
assert_warn(/Unsupported encoding/) {
open(IO::NULL, encoding: "bom|utf-" + "x" * 10000) {}
}
end;
end
def test_cbuf
with_tmpdir {
fn = "tst"

View file

@ -1,6 +1,6 @@
#define RUBY_VERSION "2.1.8"
#define RUBY_RELEASE_DATE "2015-12-16"
#define RUBY_PATCHLEVEL 437
#define RUBY_PATCHLEVEL 438
#define RUBY_RELEASE_YEAR 2015
#define RUBY_RELEASE_MONTH 12