[#24536] 「Rubyの落し方」 v.s. ruby_1_8 — akira yamada / やまだあきら <akira@...>

<URL:http://jp.rubyist.net/magazine/?0002-RubyCore>

40 messages 2004/10/20
[#24541] Re: 「Rubyの落し方」 v.s. ruby_1_8 — Yukihiro Matsumoto <matz@...> 2004/10/20

まつもと ゆきひろです

[#24599] 1.8.2 preview3? — akira yamada / やまだあきら <akira@...> 2004/10/26

2004-10-20 (水) の 21:38 +0900 に Yukihiro Matsumoto さんは書きました:

[#24605] Re: 1.8.2 preview3? — akira yamada / やまだあきら <akira@...> 2004/10/27

2004-10-26 (火) の 16:16 +0900 に akira yamada / やまだあきら さんは書きました:

[#24606] Re: 1.8.2 preview3? — Yukihiro Matsumoto <matz@...> 2004/10/27

まつもと ゆきひろです

[#24608] Re: 1.8.2 preview3? — akira yamada / やまだあきら <akira@...> 2004/10/27

2004-10-27 (水) の 11:48 +0900 に Yukihiro Matsumoto さんは書きました:

[#24620] Re: 1.8.2 preview3? — akira yamada / やまだあきら <akira@...> 2004/10/27

2004-10-27 (水) の 12:42 +0900 に akira yamada / やまだあきら さんは書きました:

[#24629] Re: 1.8.2 preview3? — Tanaka Akira <akr@...17n.org> 2004/10/29

In article <1098888819.9446.14.camel@rice.p.arika.org>,

[ruby-dev:24542] Re: IO#readpartial dumps core

From: Yukihiro Matsumoto <matz@...>
Date: 2004-10-20 12:56:53 UTC
List: ruby-dev #24542
まつもと ゆきひろです

In message "Re: [ruby-dev:24540] IO#readpartial dumps core"
    on Wed, 20 Oct 2004 20:19:00 +0900, Tanaka Akira <akr@m17n.org> writes:
|
|次のようにすると core を吐きます。
|
|% ./ruby -d -e '
|r, w = IO.pipe
|len = 0x20000
|buf = "\0" * len
|Thread.new {
|  Thread.pass
|  buf.replace ""
|  (len/4096).times { w << "a"*4096 } }
|r.readpartial(len, buf)
|'
|-e:9: [BUG] Segmentation fault
|ruby 1.9.0 (2004-10-20) [i686-linux]
|
|-e:9: [BUG] Segmentation fault
|ruby 1.9.0 (2004-10-20) [i686-linux]
|
|Index: io.c

おお、今回はパッチが付いている。

でも、EOFに突き当たるよりもバッファが書き換わったことを検出
した方が良いんじゃないですかね。

--- io.c	20 Oct 2004 03:42:53 -0000	1.306
+++ io.c	20 Oct 2004 12:56:42 -0000
@@ -1133,2 +1133,5 @@ io_readpartial(argc, argv, io)
     READ_CHECK(fptr->f);
+    if (RSTRING(str)->len != len) {
+	rb_raise(rb_eRuntimeError, "buffer string modified");
+    }
     n = read_buffered_data(RSTRING(str)->ptr, len, fptr->f);

In This Thread