pvalena / rpms / ruby

Forked from rpms/ruby 6 years ago
Clone
f0df5e4
diff -ruN ruby-1.8.4.orig/eval.c ruby-1.8.4/eval.c
f0df5e4
--- ruby-1.8.4.orig/eval.c	2005-12-20 22:41:47.000000000 +0900
f0df5e4
+++ ruby-1.8.4/eval.c	2006-07-20 18:33:50.000000000 +0900
f0df5e4
@@ -2097,7 +2097,8 @@
f0df5e4
 	}
f0df5e4
     }
f0df5e4
     st_insert(RCLASS(klass)->m_tbl, name,
f0df5e4
-      (st_data_t)NEW_METHOD(NEW_FBODY(body, def, origin), orig->nd_noex));
f0df5e4
+	     (st_data_t)NEW_METHOD(NEW_FBODY(body, def, origin),
f0df5e4
+				   NOEX_WITH_SAFE(orig->nd_noex)));
f0df5e4
     if (singleton) {
f0df5e4
 	rb_funcall(singleton, singleton_added, 1, ID2SYM(name));
f0df5e4
     }
f0df5e4
@@ -5638,6 +5639,11 @@
f0df5e4
     TMP_PROTECT;
f0df5e4
     volatile int safe = -1;
f0df5e4
 
f0df5e4
+    if (NOEX_SAFE(flags) > ruby_safe_level &&
f0df5e4
+       !(flags&NOEX_TAINTED) && ruby_safe_level == 0 && NOEX_SAFE(flags) > 2) {
f0df5e4
+       rb_raise(rb_eSecurityError, "calling insecure method: %s",
f0df5e4
+		rb_id2name(id));
f0df5e4
+    }
f0df5e4
     switch (ruby_iter->iter) {
f0df5e4
       case ITER_PRE:
f0df5e4
       case ITER_PAS:
f0df5e4
@@ -5742,10 +5748,6 @@
f0df5e4
 	    b2 = body = body->nd_next;
f0df5e4
 
f0df5e4
 	    if (NOEX_SAFE(flags) > ruby_safe_level) {
f0df5e4
-		if (!(flags&NOEX_TAINTED) && ruby_safe_level == 0 && NOEX_SAFE(flags) > 2) {
f0df5e4
-		    rb_raise(rb_eSecurityError, "calling insecure method: %s",
f0df5e4
-			     rb_id2name(id));
f0df5e4
-		}
f0df5e4
 		safe = ruby_safe_level;
f0df5e4
 		ruby_safe_level = NOEX_SAFE(flags);
f0df5e4
 	    }