# Dl when $SAFE = 1

**URL:** <https://www.ruby-forum.com/t/dl-when-safe-1/89176>\
**Category:** Development\
**Created:** [March 18, 2007, 5:03am UTC](https://www.ruby-forum.com/t/dl-when-safe-1/89176 "2007-03-18T05:03:38Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![sheepman](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/d07c76/32.png) [@sheepman](https://www.ruby-forum.com/u/sheepman)\
**Post date:** [March 18, 2007, 5:03am UTC](https://www.ruby-forum.com/t/dl-when-safe-1/89176/1 "2007-03-18T05:03:38Z")

</div>

ã“ã‚“ã«ã¡ã¯ã€sheepman ã§ã™ã€‚

$SAFE=1ã®ã¨ãã® dl ãƒ©ã‚¤ãƒ–ãƒ©ãƒªã®æŒ¯ã‚‹èˆžã„ã«é–¢ã—ã¦ã§ã™ã€‚

require ‘dl’  
$SAFE = 1  
h = DL.dlopen(nil)  
sys = h.sym(‘system’, ‘IP’)  
uname = ‘uname -rs’.taint  
sys[uname]

ã¨ã„ã†æ„Ÿã˜ã§ã€æ±šæŸ“ã•ã‚Œã¦ã„ã‚‹æ–‡å­—åˆ—ã‚’å¼•æ•°ã¨ã—ã¦ system ã‚’å‘¼ã¹ã¦ã—ã¾ã„ã¾ã™ã€‚  
ã¨ã„ã†ã‚ã‘ã§ã€ãƒ‘ãƒƒãƒã‚’æ›¸ã„ã¦ã¿ã¾ã—ãŸã€‚

DL.dlopen ã®å¼•æ•°ã‚‚ SafeStringValue ã§ãƒã‚§ãƒƒã‚¯ã™ã‚‹ã‚ˆã†ã«ã—ã¾ã—ãŸã€‚

dl ã®ã‚³ãƒ¼ãƒ‰ã‚’èª­ã‚€ã¨ã€String#to\_ptr ã¯ã‚‚ã¨ã®æ–‡å­—åˆ—ãŒæ±šæŸ“ã•ã‚Œã¦ã„ãªãã¦ã‚‚ã€å¸¸ã«æ±šæŸ“ã•ã‚ŒãŸ  
PtrData ã‚’è¿”ã™ã®ã§ã€ PtrData.new ã‚‚å¸¸ã«æ±šæŸ“ã•ã‚ŒãŸã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’è¿”ã™ã‚ˆã†ã«ã—ã¦ã„ã¾ã™ã€‚

ã“ã®ãƒ‘ãƒƒãƒã¯å¾Œæ–¹äº’æ›ãŒãªã„ã®ã§ã€æ¤œè¨ŽãŒå¿…è¦ã ã¨æ€ã„ã¾ã™ã€‚

---

<div class="post-metadata">

**Author:** ![sheepman](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/d07c76/32.png) [@sheepman](https://www.ruby-forum.com/u/sheepman)\
**Post date:** [March 18, 2007, 8:00pm UTC](https://www.ruby-forum.com/t/dl-when-safe-1/89176/2 "2007-03-18T20:00:06Z")

</div>

sheepman wrote:

> e$B$H$$$&46$8$G!“1x@w$5$l$F$$$kJ8;zNs$r0z?t$H$7$Fe(B system e$B$r8F$Y$F$7$^$$$^$9!#e(B  
> e$B$H$$$&$o$1$G!”%Q%C%A$r=q$$$F$\_$^$7$?!#e(B

e$B$^$:;O$a$K!“0JA0$N;d$N9M$($H$7$F$O!“e(Bsysteme$B$r8F$S=P$9e(Brubye$B$N%i%$%V%i%jB&$G$Ne(B  
e$B%A%’%C%/$,K\>$^$7$$$H;W$C$F$$$^$7$?!#e(Bdle$B$O!“3HD%%i%$%V%i%j$r=q$/Be$o$j$Ke(Bruby  
e$B$Ge(BAPIe$B$X%”%/%;%9$9$k$3$H$r9M$($F:n$C$?$b$N$G$9$N$G!”$=$Ne(BAPIe$B$X%”%/%;%9$9$ke(B  
rubye$B$N%W%m%0%i%`$d%i%$%V%i%j$,e(BSAFEe$B$N%A%’%C%/$r$9$k$N$,NI$$$N$G$O$J$$$+$H9Me(B  
e$B$($F$$$^$7$?!#e(B

e$B$7$+$7!"e(Bdle$B$OFC\<l$J3HD%%i%$%V%i%j$G$9$7!"e(Bdle$B$r4m$J$$%W%m%0%i%`$G$O30ItF~NO$Ke(B e$B0MB8$9$k$h$&$K$O;H$o$J$$$H$$$&9M$($N2<$G$O!"$"$i$f$kA`:n$r6X;\_$9$k$H$$$&$Ne(B  
e$B$bF10U$G$-$^$9!#e(B

e$B$5$F!"e(Bsysteme$B$NNc$G$9$,!“e(Bsysteme$B$N8F$S=P$7$=$N$b$N$Oe(Btainte$B%A%’%C%/$NBP\>]$G$9!#e(B  
e$B4m$J$$4X?t$,;H$o$l$k\>l9g$K$O%A%’%C%/$,$+$+$k$O$:$G!”$=$N$H$-$K$OF1;~$K0z?te(B  
e$B$N%A%’%C%/$b9T$($PNI$$$H9M$($k$3$H$b$G$-$k$H;W$$$^$9!#e(B

dlopene$B$K$D$$$F$Oe(Bdlopene$B$K$h$C$F2?$,4m81$K$J$k$N$+$N5DO@$,I,MW$@$H;W$$$^$9!#e(B

e$B0J\>e$N$3$H$+$i!"e(Bsysteme$B$He(Bdlopene$B$N7o$O$I$l$,E,@Z$J$N$+;d$K$OH=CG$G$-$^$;$s!#e(B

malloce$B$K$h$C$FF@$?%_%V%8%’%/%H$,e(Btaintede$B$G$"$k$Y$-$+$I$&$+$K$D$$$F$O!"$9$Y$Fe(B  
e$BDj?t$+$i9=@.$5$l$?%_%V%8%’%/%H$b4m81$@$H$9$Y$-$J$N$+$H5?Ld$,$"$j$^$9!#e(B  
e$B$=$N8e$NCf?H$NJQ99$Ge(Btaintede$B$K$7$J$1$l$P$J$i$J$$\>l9g$,$"$j$=$&$J$3$H$OA[A|$Ge(B  
e$B$-$^$9$,!“e(Ballocatee$B$NCf$Ge(Btaintede$B$K$9$kM}M3$O$I$3$K$”$k$N$G$7$g$&$+!)e(B

---

<div class="post-metadata">

**Author:** ![sheepman](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/d07c76/32.png) [@sheepman](https://www.ruby-forum.com/u/sheepman)\
**Post date:** [March 19, 2007, 12:43am UTC](https://www.ruby-forum.com/t/dl-when-safe-1/89176/3 "2007-03-19T00:43:34Z")

</div>

e$B$3$s$K$A$O!"e(Bsheepman e$B$G$9!#e(B

On Mon, 19 Mar 2007 03:59:37 +0900  
Takaaki T. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> dlopene$B$K$D$$$F$Oe(Bdlopene$B$K$h$C$F2?$,4m81$K$J$k$N$+$N5DO@$,I,MW$@$H;W$$$^$9!#e(B
> 
> e$B0J\>e$N$3$H$+$i!"e(Bsysteme$B$He(Bdlopene$B$N7o$O$I$l$,E,@Z$J$N$+;d$K$OH=CG$G$-$^$;$s!#e(B

e$B!V3HD%%i%$%V%i%j$,Ds6!$9$Y$-%;%-%e%j%F%#$O2?$+!W$J$I$r9M$($k$HE%\>B$K%O%^$C$Fe(B  
e$BEz$,=P$J$$$N$G!"e(Bruby e$BK\BN$,$d$C$F$$$k$3$He(B  
[http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=���������ƥ����ǥ�](http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=%A5%BB%A5%AD%A5%E5%A5%EA%A5%C6%A5%A3%A5%E2%A5%C7%A5%EB)  
e$B$K9g$o$;$k$3$H$,!"3+H/\<T$K$H$C$F$b%f!\<%6$K$H$C$F$bJ,$+$j$d$9$$$s$8$c$J$$$+$J$H!"e(B  
e$BKM$O;W$$$^$9!#e(B

> malloce$B$K$h$C$FF@$?%_%V%8%'%/%H$,e(Btaintede$B$G$“$k$Y$-$+$I$&$+$K$D$$$F$O!”$9$Y$Fe(B  
> e$BDj?t$+$i9=@.$5$l$?%_%V%8%'%/%H$b4m81$@$H$9$Y$-$J$N$+$H5?Ld$,$“$j$^$9!#e(B  
> e$B$=$N8e$NCf?H$NJQ99$Ge(Btaintede$B$K$7$J$1$l$P$J$i$J$$\>l9g$,$”$j$=$&$J$3$H$OA[A|$Ge(B  
> e$B$-$^$9$,!“e(Ballocatee$B$NCf$Ge(Btaintede$B$K$9$kM}M3$O$I$3$K$”$k$N$G$7$g$&$+!)e(B

e$BN)@P$5$s$,=q$+$l$?%3!\<%I$+$iN)@P$5$s$N0U?^$r?dB,$7$?7k2L$G$9!#e(B  
e$B$=$l0J30$NM}M3$O$"$j$^$;$s!#e(B

String#to\_ptr e$B$He(B Array#to\_ptr  
e$B$,%;!\<%U%l%Y%k$K$h$i$:!“$^$?JQ49A0$Ne(B  
e$BJ8;zNs$dG[Ns$,1x@w$5$l$F$$$k$+$I$&$+$K0MB8$;$:!”\>o$K1x@w$5$l$?e(B  
PtrData e$B$re(B  
e$BJV$7$F$$$?$N$G!“e(BPtrData.new  
e$B$b$=$l$i$K9g$o$;$F\>o$K1x@w$5$l$?%\*%V%8%'%/%H$re(B  
e$BJV$7$?J}$,$$$$$N$+$J$”$H$$$&!"7Z$$5$;}$A$G$9!#e(B
