[#19685] [Oniguruma] Version 1.8.1 — "K.Kosako" <kosako@...>

ftp.ruby-lang.orgに、onigd20030301.tar.gzを置きました。

92 messages 2003/03/01
[#19687] Re: [Oniguruma] Version 1.8.1 — matz@... (Yukihiro Matsumoto) 2003/03/02

まつもと ゆきひろです

[#19688] Re: [Oniguruma] Version 1.8.1 — Tanaka Akira <akr@...17n.org> 2003/03/02

In article <1046613803.268414.3770.nullmailer@picachu.netlab.jp>,

[#19748] [Oniguruma] Version 1.8.2 — "K.Kosako" <kosako@...> 2003/03/05

Tanaka Akiraさんの<871y1pu8am.fsf@serein.a02.aist.go.jp>から

[#19749] Re: [Oniguruma] Version 1.8.2 — "Akinori MUSHA" <knu@...> 2003/03/05

At Wed, 5 Mar 2003 18:07:17 +0900,

[#19750] Re: [Oniguruma] Version 1.8.2 — "K.Kosako" <kosako@...> 2003/03/05

Akinori MUSHAさんの<86r89mi39s.wl%knu@iDaemons.org>から

[#19793] Re: [Oniguruma] Version 1.8.2 — "Akinori MUSHA" <knu@...> 2003/03/11

At Wed, 5 Mar 2003 18:18:31 +0900,

[#19808] [Oniguruma] Version 1.8.4 — "K.Kosako" <kosako@...> 2003/03/12

Akinori MUSHAさんの<86bs0iqoif.wl%knu@iDaemons.org>から

[#19825] Re: [Oniguruma] Version 1.8.4 — Tanaka Akira <akr@...17n.org> 2003/03/16

In article <20030312044626.2D879C2@helium.ruby-lang.org>,

[#19858] Re: [Oniguruma] Version 1.8.4 — Tanaka Akira <akr@...17n.org> 2003/03/20

In article <20030318015042.DCBB859A@helium.ruby-lang.org>,

[#19866] Re: [Oniguruma] Version 1.8.4 — "K.Kosako" <kosako@...> 2003/03/21

Tanaka Akiraさんの<87llzavfl9.fsf@serein.a02.aist.go.jp>から

[#19868] Re: [Oniguruma] Version 1.8.4 — Tanaka Akira <akr@...17n.org> 2003/03/21

In article <20030321040221.EC03C5AA@helium.ruby-lang.org>,

[#19869] Re: [Oniguruma] Version 1.8.4 — matz@... (Yukihiro Matsumoto) 2003/03/21

まつもと ゆきひろです

[#19870] Re: [Oniguruma] Version 1.8.4 — Tanaka Akira <akr@...17n.org> 2003/03/21

In article <1048256492.877945.30145.nullmailer@picachu.netlab.jp>,

[#19873] Re: [Oniguruma] Version 1.8.4 — matz@... (Yukihiro Matsumoto) 2003/03/21

まつもと ゆきひろです

[#19912] Re: [Oniguruma] Version 1.8.4 — TAKAHASHI Masayoshi <takahashi@...> 2003/03/26

高橋征義です。

[#19913] Re: [Oniguruma] Version 1.8.4 — Tanaka Akira <akr@...17n.org> 2003/03/26

In article <20030326.151120.41647198.takahashi@twinspark.co.jp>,

[#19920] Re: [Oniguruma] Version 1.8.4 — Tanaka Akira <akr@...17n.org> 2003/03/27

In article <008c01c2f360$9ac1b030$85222fc0@sarion.co.jp>,

[#19698] 1.8.0 preview2 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

19 messages 2003/03/03
[#19716] [1.8.0 preview2] HP-UX 11.11 — WATANABE Tetsuya <tetsu@...> 2003/03/04

渡辺哲也です。

[#19718] Re: [1.8.0 preview2] HP-UX 11.11 — WATANABE Hirofumi <eban@...> 2003/03/04

わたなべです。

[#19751] (1.8.0-preview2) Proc#call — Fukumoto Atsushi <fukumoto@...>

1.8.0-preview2 で、 Proc#call の動作がへんです。

51 messages 2003/03/06
[#19752] Re: (1.8.0-preview2) Proc#call — nobu.nakada@... 2003/03/07

なかだです。

[#19754] Re: (1.8.0-preview2) Proc#call — matz@... (Yukihiro Matsumoto) 2003/03/07

まつもと ゆきひろです

[#19755] Re: (1.8.0-preview2) Proc#call — nobu.nakada@... 2003/03/07

なかだです。

[#19756] Re: (1.8.0-preview2) Proc#call — matz@... (Yukihiro Matsumoto) 2003/03/07

まつもと ゆきひろです

[#19770] Re: (1.8.0-preview2) Proc#call — nobu.nakada@... 2003/03/08

なかだです。

[#19786] Re: (1.8.0-preview2) Proc#call — matz@... (Yukihiro Matsumoto) 2003/03/10

まつもと ゆきひろです

[#19787] Re: (1.8.0-preview2) Proc#call — nobu.nakada@... 2003/03/10

なかだです。

[#19788] Re: (1.8.0-preview2) Proc#call — matz@... (Yukihiro Matsumoto) 2003/03/10

まつもと ゆきひろです

[#19789] Re: (1.8.0-preview2) Proc#call — Koji Arai <JCA02266@...> 2003/03/11

新井です。

[#19797] Re: (1.8.0-preview2) Proc#call — matz@... (Yukihiro Matsumoto) 2003/03/11

まつもと ゆきひろです

[#19798] Re: (1.8.0-preview2) Proc#call — Masatoshi SEKI <m_seki@...> 2003/03/11

[#19799] Re: (1.8.0-preview2) Proc#call — matz@... (Yukihiro Matsumoto) 2003/03/11

[#19809] Re: (1.8.0-preview2) Proc#call — Masatoshi SEKI <m_seki@...> 2003/03/12

[#20090] Re: (1.8.0-preview2) Proc#call — matz@... (Yukihiro Matsumoto) 2003/04/25

まつもと ゆきひろです

[#20101] Re: (1.8.0-preview2) Proc#call — Masatoshi SEKI <m_seki@...> 2003/04/28

[#20102] Re: (1.8.0-preview2) Proc#call — matz@... (Yukihiro Matsumoto) 2003/04/28

まつもと ゆきひろです

[#20148] Re: (1.8.0-preview2) Proc#call — Masatoshi SEKI <m_seki@...> 2003/05/03

[#20179] Re: (1.8.0-preview2) Proc#call — m_seki@... 2003/05/07

[#20180] Re: (1.8.0-preview2) Proc#call — matz@... (Yukihiro Matsumoto) 2003/05/07

まつもと ゆきひろです

[#20196] Re: (1.8.0-preview2) Proc#call — Masatoshi SEKI <m_seki@...> 2003/05/17

[#20200] Re: (1.8.0-preview2) Proc#call — matz@... (Yukihiro Matsumoto) 2003/05/18

まつもと ゆきひろです

[#19865] dl in $SAFE=4 — Minero Aoki <aamine@...>

あおきです。

15 messages 2003/03/21
[#19871] Re: dl in $SAFE=4 — matz@... (Yukihiro Matsumoto) 2003/03/21

まつもと ゆきひろです

[ruby-dev:19865] dl in $SAFE=4

From: Minero Aoki <aamine@...>
Date: 2003-03-21 03:46:22 UTC
List: ruby-dev #19865
あおきです。

ruby-list のセキュリティのスレッドを読んで穴を探してみたんですが、
dl を経由するとなんでもできることがわかりました。たとえば次の
コードで sh が起動できます。

  require 'dl'
  $SAFE = 4
  DL.dlopen('libc.so.6').sym('system', 'IS').call("/bin/sh")

とりあえず最低限のパッチだけ付けます。セキュリティレベル
いくつで拒否するのかという点や、ptr の汚染などはちゃんと
考える必要がありそうです。
-------------------------------------------------------------------
青木峰郎

Index: dl.c
===================================================================
RCS file: /home/aamine/cvs/ruby/ruby/ext/dl/dl.c,v
retrieving revision 1.16
diff -u -p -r1.16 dl.c
--- dl.c	16 Jan 2003 07:38:40 -0000	1.16
+++ dl.c	21 Mar 2003 03:46:06 -0000
@@ -542,18 +542,21 @@ rb_io_to_ptr(VALUE self)
 VALUE
 rb_dl_dlopen(int argc, VALUE argv[], VALUE self)
 {
+  rb_secure(2);
   return rb_class_new_instance(argc, argv, rb_cDLHandle);
 }
 
 VALUE
 rb_dl_malloc(VALUE self, VALUE size)
 {
+  rb_secure(2);
   return rb_dlptr_malloc(DLNUM2LONG(size), dlfree);
 }
 
 VALUE
 rb_dl_strdup(VALUE self, VALUE str)
 {
+  rb_secure(2);
   str = rb_String(str);
   return rb_dlptr_new(strdup(RSTRING(str)->ptr), RSTRING(str)->len, dlfree);
 }
@@ -561,6 +564,7 @@ rb_dl_strdup(VALUE self, VALUE str)
 static VALUE
 rb_dl_sizeof(VALUE self, VALUE str)
 {
+  rb_secure(2);
   return INT2NUM(dlsizeof(StringValuePtr(str)));
 }
 
@@ -571,6 +575,7 @@ rb_dl_callback(int argc, VALUE argv[], V
   int rettype, entry, i;
   char fname[127];
 
+  rb_secure(2);
   proc = Qnil;
   switch( rb_scan_args(argc, argv, "11", &type, &proc) ){
   case 1:
@@ -636,9 +641,11 @@ rb_dl_callback(int argc, VALUE argv[], V
 static VALUE
 rb_dl_remove_callback(VALUE mod, VALUE sym)
 {
-  freefunc_t f = rb_dlsym2csym(sym);
+  freefunc_t f;
   int i, j;
 
+  rb_secure(2);
+  f = rb_dlsym2csym(sym);
   for( i=0; i < CALLBACK_TYPES; i++ ){
     for( j=0; j < MAX_CALLBACK; j++ ){
       if( rb_dl_callback_table[i][j] == f ){
Index: sym.c
===================================================================
RCS file: /home/aamine/cvs/ruby/ruby/ext/dl/sym.c,v
retrieving revision 1.16
diff -u -p -r1.16 sym.c
--- sym.c	16 Jan 2003 07:38:40 -0000	1.16
+++ sym.c	21 Mar 2003 03:46:39 -0000
@@ -77,6 +77,7 @@ rb_dlsym_new(void (*func)(), const char 
   struct sym_data *data;
   const char *ptype;
 
+  rb_secure(2);
   if( !type || !type[0] ){
     return rb_dlptr_new((void*)func, 0, 0);
   }
@@ -329,6 +330,7 @@ rb_dlsym_call(int argc, VALUE argv[], VA
   long ftype;
   void *func;
 
+  rb_secure(2);
   Data_Get_Struct(self, struct sym_data, sym);
   DEBUG_CODE({
     printf("rb_dlsym_call(): type = '%s', func = 0x%x\n", sym->type, sym->func);
Index: ptr.c
===================================================================
RCS file: /home/aamine/cvs/ruby/ruby/ext/dl/ptr.c,v
retrieving revision 1.16
diff -u -p -r1.16 ptr.c
--- ptr.c	16 Jan 2003 07:38:40 -0000	1.16
+++ ptr.c	21 Mar 2003 03:49:29 -0000
@@ -26,6 +26,7 @@ rb_hash_delete(VALUE hash, VALUE key)
 static void
 rb_dlmem_delete(void *ptr)
 {
+  rb_secure(2);
   rb_hash_delete(DLMemoryTable, DLLONG2NUM(ptr));
 }
 
@@ -89,6 +90,7 @@ rb_dlptr_new2(VALUE klass, void *ptr, lo
   struct ptr_data *data;
   VALUE val;
 
+  rb_secure(2);
   if( ptr ){
     val = rb_dlmem_aref(ptr);
     if( val == Qnil ){
@@ -130,6 +132,7 @@ rb_dlptr_malloc(long size, freefunc_t fu
 {
   void *ptr;
 
+  rb_secure(2);
   ptr = dlmalloc((size_t)size);
   memset(ptr,0,(size_t)size);
   return rb_dlptr_new(ptr, size, func);
@@ -161,6 +164,7 @@ rb_dlptr_s_allocate(VALUE klass)
   VALUE obj;
   struct ptr_data *data;
 
+  rb_secure(2);
   obj = Data_Make_Struct(klass, struct ptr_data, 0, dlptr_free, data);
   data->ptr = 0;
   data->free = 0;
@@ -850,6 +854,7 @@ rb_dlptr_aset(int argc, VALUE argv[], VA
   long memsize;
   void *memimg;
 
+  rb_secure(2);
   switch( rb_scan_args(argc, argv, "21", &key, &num, &val) ){
   case 2:
     val = num;

In This Thread

Prev Next