[前][次][番号順一覧][スレッド一覧]

ruby-changes:11337

From: nobu <ko1@a...>
Date: Sat, 14 Mar 2009 18:05:20 +0900 (JST)
Subject: [ruby-changes:11337] Ruby:r22954 (trunk): * proc.c (rb_proc_call): checks overflow.

nobu	2009-03-14 18:05:09 +0900 (Sat, 14 Mar 2009)

  New Revision: 22954

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=22954

  Log:
    * proc.c (rb_proc_call): checks overflow.

  Modified files:
    trunk/ChangeLog
    trunk/proc.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 22953)
+++ ChangeLog	(revision 22954)
@@ -1,5 +1,7 @@
-Sat Mar 14 17:59:10 2009  Nobuyoshi Nakada  <nobu@r...>
+Sat Mar 14 18:05:08 2009  Nobuyoshi Nakada  <nobu@r...>
 
+	* proc.c (rb_proc_call): checks overflow.
+
 	* proc.c (rb_proc_parameters): unnamed_parameters() expects in
 	  not VALUE.
 
Index: proc.c
===================================================================
--- proc.c	(revision 22953)
+++ proc.c	(revision 22954)
@@ -529,10 +529,17 @@
 VALUE
 rb_proc_call(VALUE self, VALUE args)
 {
+    long argc = RARRAY_LEN(args);
     rb_proc_t *proc;
     GetProcPtr(self, proc);
+#if SIZEOF_LONG > SIZEOF_INT
+    if (argc > INT_MAX || argc < 0) {
+	rb_raise(rb_eArgError, "too many arguments (%lu)",
+		 (unsigned long)argc);
+    }
+#endif
     return rb_vm_invoke_proc(GET_THREAD(), proc, proc->block.self,
-			     RARRAY_LEN(args), RARRAY_PTR(args), 0);
+			     (int)argc, RARRAY_PTR(args), 0);
 }
 
 VALUE

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]