[#21225] Re: [ruby-cvs] ruby: * enum.c (inject_i): use rb_yield_values. — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

14 messages 2003/08/22
[#21227] Re: [ruby-cvs] ruby: * enum.c (inject_i): use rb_yield_values. — nobu.nakada@... 2003/08/22

なかだです。

[#21228] Re: [ruby-cvs] ruby: * enum.c (inject_i): use rb_yield_values. — matz@... (Yukihiro Matsumoto) 2003/08/22

まつもと ゆきひろです

[#21281] 大量メモリ消費攻撃に対する対応 — Hidetoshi NAGAI <nagai@...>

永井@知能.九工大です.

16 messages 2003/08/29
[#21285] Re: 大量メモリ消費攻撃に対する対応 — matz@... (Yukihiro Matsumoto) 2003/08/29

まつもと ゆきひろです

[#21288] Re: 大量メモリ消費攻撃に対する対応 — Hidetoshi NAGAI <nagai@...> 2003/08/29

永井@知能.九工大です.

[#21306] Re: 大量メモリ消費攻撃に対する対応 — matz@... (Yukihiro Matsumoto) 2003/09/03

まつもと ゆきひろです

[ruby-dev:21171] [BUG]: Marshal.dump(nil has instance vars)

From: Koji Arai <JCA02266@...>
Date: 2003-08-08 02:32:41 UTC
List: ruby-dev #21171
新井です。

1.8.0 リリース後の変更に関するバグ報告ですが、インスタンス変
数を保持する nil 等を dump すると SEGV します。

    class NilClass
      attr_accessor :foo
    end
    nil.foo = 1
    p nil.foo
    p Marshal.dump(nil).unpack("x2 a*")

    => ruby 1.8.0 (2003-08-07) [i586-linux]
    1
    -:6: [BUG] Segmentation fault
    ruby 1.8.0 (2003-08-07) [i586-linux]

修正後は以下

    => ruby 1.8.0 (2003-08-07) [i586-linux]
    1
    ["I0\006:\t@fooi\006"]

nil のダンプで limit を消費しちゃマズイですかね?


Fri Aug  8 11:29:26 2003  Koji Arai  <jca02266@nifty.ne.jp>

	* marshal.c (w_object): should set `c_arg' at first.

Index: marshal.c
===================================================================
RCS file: /usr/local/cvsup/ruby/ruby/marshal.c,v
retrieving revision 1.96
diff -u -r1.96 marshal.c
--- marshal.c	6 Aug 2003 21:50:06 -0000	1.96
+++ marshal.c	8 Aug 2003 02:24:45 -0000
@@ -434,6 +434,10 @@
 	rb_raise(rb_eArgError, "exceed depth limit");
     }
 
+    limit--;
+    c_arg.limit = limit;
+    c_arg.arg = arg;
+
     if (ivtbl = rb_generic_ivar_table(obj)) {
 	w_byte(TYPE_IVAR, arg);
     }
@@ -466,10 +470,6 @@
     else {
 	long num;
 
-	limit--;
-	c_arg.limit = limit;
-	c_arg.arg = arg;
-
 	if (st_lookup(arg->data, obj, &num)) {
 	    w_byte(TYPE_LINK, arg);
 	    w_long(num, arg);

--
新井康司 (Koji Arai)

In This Thread

Prev Next