From: Masaki Matsushita Date: 2012-02-28T15:33:33+09:00 Subject: [ruby-dev:45297] [ruby-trunk - Bug #6099] [BUG] probable buffer overflow Issue #6099 has been updated by Masaki Matsushita. =begin IO#readpartialにも同様の問題があるようです。 require "fcntl" r, w = IO.pipe r.fcntl(Fcntl::F_SETFL, Fcntl::O_NONBLOCK) buf = " " * 100 t = Thread.new{p r.readpartial(100, buf)} sleep 0.1 Thread.pass buf.replace("") p buf.bytesize; w.write("a" * 100) Thread.pass t.join =end ---------------------------------------- Bug #6099: [BUG] probable buffer overflow https://bugs.ruby-lang.org/issues/6099 Author: Usaku NAKAMURA Status: Open Priority: Low Assignee: Category: core Target version: 2.0.0 ruby -v: ruby 2.0.0dev (2012-02-27 trunk 34828) [i386-netbsdelf] ふと思い立って以下のようなコードを実行してみたところ、表題の[BUG]となりました。 あんまり重大ではないと考えますが、一応報告しておきます。 他のメソッドでも似たようなことができるものはあると思います。 なお、プラットフォーム依存はないはずです。 % ruby -e ' r, w = IO.pipe buf = " " * 100 Thread.new{p r.sysread(100, buf)} Thread.pass buf.replace("") p buf.bytesize; w.write("a" * 100) Thread.pass ' -- http://bugs.ruby-lang.org/