From: nobu@... Date: 2004-09-30T18:47:17+09:00 Subject: [ruby-dev:24376] Re: IO.popen dumps core なかだです。 At Thu, 30 Sep 2004 14:24:06 +0900, Tanaka Akira wrote in [ruby-dev:24375]: > > 次のようにすると core を吐きます。 > > % ./ruby -e ' > pname = Object.new > mode = "\0" * 0x20000 > class << pname; self end.send(:define_method, :to_str) { > mode.replace "r" > "echo" > } > IO.popen(pname, mode) > ' これが楽かなぁ。 Index: io.c =================================================================== RCS file: /cvs/ruby/src/ruby/io.c,v retrieving revision 1.292 diff -u -2 -p -r1.292 io.c --- io.c 19 Sep 2004 18:42:31 -0000 1.292 +++ io.c 30 Sep 2004 09:45:08 -0000 @@ -2973,5 +2973,6 @@ rb_io_s_popen(argc, argv, klass) } else { - mode = StringValuePtr(pmode); + strncpy(mode = mbuf, StringValuePtr(pmode), sizeof(mbuf) - 1); + mbuf[sizeof(mbuf) - 1] = 0; } tmp = rb_check_array_type(pname); -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦