# Ruby-1.8.6, $SAFE=4, Proc#call

**URL:** <https://www.ruby-forum.com/t/ruby-1-8-6-safe-4-proc-call/91480>\
**Category:** Development\
**Created:** [April 9, 2007, 5:28pm UTC](https://www.ruby-forum.com/t/ruby-1-8-6-safe-4-proc-call/91480 "2007-04-09T17:28:07Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Masatoshi\_SEKI](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/5f8ce5/32.png) [@Masatoshi\_SEKI](https://www.ruby-forum.com/u/Masatoshi_SEKI)\
**Post date:** [April 9, 2007, 5:28pm UTC](https://www.ruby-forum.com/t/ruby-1-8-6-safe-4-proc-call/91480/1 "2007-04-09T17:28:07Z")

</div>

e$B31$H$$$$$^$9!#e(B

e$B0lEY!"$^$D$b$H$5$s$K$O;d?.$G\<ALd$7$?$N$G$9$,!"$;$C$+$/$J$N$Ge(BMLe$B$K$bEj$2$^$9!#e(B

Proc#calle$B$He(Byielde$B$G!“e(BProce$B$,\<B9T$5$l$k:]$Ne(B$SAFEe$B$,0[$J$j$^$9!#e(B  
e$B$^$D$b$H$5$s$Oe(BProc#calle$B$N5sF0$,0U?^$7$?$b$N$G$”$k!"$H$N$3$H$G$7$?!#e(B(e$B$"$C$F$^$9$+e(B?\>e$B$^$D$b$H$5$se(B)

yielde$B$N5sF0$re(BProc#calle$B$HB7$($kM=Dj$O$"$j$^$9$+e(B?

e$B%9%l%C%I$r:n$C$Fe(B$SAFE =  
4e$B$G$J$K$+$r\<B9T$9$k$N$Ke(Byielde$B$r$h$/;H$C$F$$$?$N$G$9$,!“e(B  
yielde$B$be(BProc#calle$B$N5sF0$KB7$($k$H$9$k$H!”$A$g$C$HLLE]$G$9!#e(B

* * *

$SAFE=4e$B$N%9%l%C%I$+$ie(BProc#calle$B$7$?\>l9g!"e(BProce$B$r:n$C$?%3%s%F%-%9%H$Ne(Bsafe\_levele$B$Ge(B  
Proce$B$,\<B9T$5$l$k$h$&$G$9!#e(Byielde$B$9$k\>l9g$K$O!"e(Bsafe\_levele$B$,0z$-7Q$,$l$^$9!#e(B

e$B$3$l$O0U?^$7$?F0:n$G$7$g$&$+!)e(B  
e$B$J$s$H$J$/%P%0$J5$$,$7$^$9!#e(B

e$BNc$($P$3$s$J%9%/%j%W%H$G\<B83$G$-$^$9!#e(B  
four\_proce$B$NJ}$Oe(B$SAFE=4e$B$N$O$:$J$N$KI8=`=PNO$K0u;z$G$-$^$9!#e(B

## safe.rb

def four\_proc(&block)  
Thread.new { $SAFE = 4; block.call }.join  
end

def four\_yield  
Thread.new { $SAFE = 4; yield }.join  
end

four\_proc { p :proc }  
four\_yield { p :yield }

## e$B\<B9T7k2Le(B

cinq:~/develop/labo/ruby/misc mas$ ruby safe.rb  
:proc  
safe.rb:10:in `write': Insecure operation`write’ at level 4  
(SecurityError)  
from safe.rb:6:in `join' from safe.rb:6:in`four\_yield’  
from safe.rb:10

---

<div class="post-metadata">

**Author:** ![Masatoshi\_SEKI](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/5f8ce5/32.png) [@Masatoshi\_SEKI](https://www.ruby-forum.com/u/Masatoshi_SEKI)\
**Post date:** [April 9, 2007, 5:40pm UTC](https://www.ruby-forum.com/t/ruby-1-8-6-safe-4-proc-call/91480/2 "2007-04-09T17:40:08Z")

</div>

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:30705] ruby-1.8.6, $SAFE=4, Proc#call”  
on Tue, 10 Apr 2007 00:27:15 +0900, Masatoshi SEKI  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

|Proc#calle$B$He(Byielde$B$G!“e(BProce$B$,\<B9T$5$l$k:]$Ne(B$SAFEe$B$,0[$J$j$^$9!#e(B  
|e$B$^$D$b$H$5$s$Oe(BProc#calle$B$N5sF0$,0U?^$7$?$b$N$G$”$k!“$H$N$3$H$G$7$?!#e(B(e$B$”$C$F$^$9$+e(B?\>e$B$^$D$b$H$5$se(B)  
|  
|yielde$B$N5sF0$re(BProc#calle$B$HB7$($kM=Dj$O$"$j$^$9$+e(B?  
|  
|e$B%9%l%C%I$r:n$C$Fe(B$SAFE = 4e$B$G$J$K$+$r\<B9T$9$k$N$Ke(Byielde$B$r$h$/;H$C$F$$$?$N$G$9$,!“e(B  
|yielde$B$be(BProc#calle$B$N5sF0$KB7$($k$H$9$k$H!”$A$g$C$HLLE]$G$9!#e(B

e$B$^$:!“e(BProce$B$O85$N\>l=j$Ne(B$SAFEe$B$N\>uBV$r3P$($F$$$^$9$+$i!“e(B  
Proc#calle$B$N5sF0$O0U?^DL$j$G$9e(B(e$B$”$C$F$^$9e(B)e$B!#$3$l$O?.Mj$G$-$ke(B  
e$B%3!\<%I$+$I$&$+$O$=$NJ8L.$G7h$^$k$HG’\<1$7$F$$$k$+$i$G$9!#?.Mje(B  
e$B$G$-$J$$%3!\<%I$+$i8F$P$l$F$b!”%V%m%C%/$N?.Mj@-$,2\<$,$k$o$1$Ge(B  
e$B$O$J$$!#$7$+$7!“8=\>ue(Byielde$B$O85$N%3%s%F%-%9%H$Ne(B$SAFEe$B$N\>uBV$rI|e(B  
e$B85$7$^$;$s$+$i!”$3$NE@$G0l4S@-$,L5$$$H8@$($k$G$7$g$&!#e(B

e$B$G$9$+$i!"e(B(e$B$I$N%?%$%_%s%0$+$A$g$C$H7h$a$+$M$^$9$,e(B)e$B$$$:$lB7$(e(B  
e$B$k$Y$-$G$7$g$&!#$,!“0l;~E\*$Ke(B$SAFEe$B$rJQ99$7$F%V%m%C%/$r\<B9T$7e(B  
e$B$?$$$H$$$&%K!\<%:$,$”$k$H$$$&$3$H$G$9$+$i!"$=$l$KBP$9$k5_:Q:ve(B  
e$B$bF1;~$KMQ0U$7$J$$$H$^$:$$$s$G$7$g$&$M!#e(B

```
                            e$B$^$D$b$He(B e$B$f$-$R$me(B /:|)

```
