[#23717] error at TestDRbMServer (test/drb) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。どうしても原因がわからないので、報告だけ・・・

18 messages 2004/06/19
[#23718] Re: error at TestDRbMServer (test/drb) — nobu.nakada@... 2004/06/19

なかだです。

[#23719] Re: error at TestDRbMServer (test/drb) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/06/19

山本です。

[#23720] Re: error at TestDRbMServer (test/drb) — nobu.nakada@... 2004/06/19

なかだです。

[#23724] Re: error at TestDRbMServer (test/drb) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/06/19

山本です。

[#23762] Ruby 1.8.2 to be released. — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

40 messages 2004/06/23

[#23784] URI() — Tanaka Akira <akr@...17n.org>

前から思っていたのですが、URI.parse("http://...") を URI("http://...")

19 messages 2004/06/25

[ruby-dev:23828] Re: $SAFE in Proc

From: nobu.nakada@...
Date: 2004-06-28 10:54:11 UTC
List: ruby-dev #23828
なかだです。

At Sat, 26 Jun 2004 23:05:29 +0900,
Yukihiro Matsumoto wrote in [ruby-dev:23817]:
> |Procは$SAFEを保存しますが、呼び出し側よりも低いレベルに戻すこと
> |ができるのは危険ではないかといわれました。
> |説得力のある意見ではないかと思うのですが、どうでしょうか。
> 
> 前に考察した時には、Procが汚染されていないということはコード
> は信頼できると言うことなので、問題はないと言う結論を出したん
> ですが、見落としがあったかな。

そういわれるとそういう気もしてきました。

> まあ、Proc以外では信頼できないコードから呼び出されたら信頼でき
> るはずのコードでも$SAFEは高いまま呼んでいるので対称性がない
> というのはあると思います。

まぁ他は低くもならなきゃ高くもならないので、比較対象にならなく
てもいいんじゃないでしょうか。

> その場合でもフック(trace_funcとか)のようなものはやはり元の
> $SAFEレベルで実行されてほしい、というか実行されないと期待通
> り動かないと思います。

途中までは考えてたんだけど、うっかりしてました。一応追加で。


Index: eval.c
===================================================================
RCS file: /pub/cvs/ruby/src/ruby/eval.c,v
retrieving revision 1.673
diff -u -2 -p -r1.673 eval.c
--- eval.c	22 Jun 2004 14:59:25 -0000	1.673
+++ eval.c	28 Jun 2004 07:16:50 -0000
@@ -2456,4 +2456,5 @@ call_trace_func(event, node, self, id, k
     NODE *node_save;
     VALUE srcfile;
+    volatile int safe;
 
     if (!trace_func) return;
@@ -2490,4 +2491,6 @@ call_trace_func(event, node, self, id, k
     if ((state = EXEC_TAG()) == 0) {
 	srcfile = rb_str_new2(ruby_sourcefile?ruby_sourcefile:"(ruby)");
+	safe = ruby_safe_level;
+	ruby_safe_level = 0;
 	proc_invoke(trace_func, rb_ary_new3(6, rb_str_new2(event),
 					    srcfile,
@@ -2498,4 +2501,5 @@ call_trace_func(event, node, self, id, k
 		    Qundef, 0);
     }
+    ruby_safe_level = safe;
     if (raised) thread_set_raised();
     POP_TAG();


-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread

Prev Next