[#19685] [Oniguruma] Version 1.8.1 — "K.Kosako" <kosako@...>
ftp.ruby-lang.orgに、onigd20030301.tar.gzを置きました。
まつもと ゆきひろです
In article <1046613803.268414.3770.nullmailer@picachu.netlab.jp>,
まつもと ゆきひろです
In article <1046618629.053336.3932.nullmailer@picachu.netlab.jp>,
まつもと ゆきひろです
In article <1046626516.031539.4118.nullmailer@picachu.netlab.jp>,
まつもと ゆきひろです
Tanaka Akiraさんの<871y1pu8am.fsf@serein.a02.aist.go.jp>から
At Wed, 5 Mar 2003 18:07:17 +0900,
Akinori MUSHAさんの<86r89mi39s.wl%knu@iDaemons.org>から
At Wed, 5 Mar 2003 18:18:31 +0900,
Akinori MUSHAさんの<86bs0iqoif.wl%knu@iDaemons.org>から
In article <20030312044626.2D879C2@helium.ruby-lang.org>,
Tanaka Akiraさんの<87smtnl3r6.fsf@serein.a02.aist.go.jp>から
In article <20030317072134.6C0298D@helium.ruby-lang.org>,
In article <20030318015042.DCBB859A@helium.ruby-lang.org>,
Tanaka Akiraさんの<87llzavfl9.fsf@serein.a02.aist.go.jp>から
In article <20030321040221.EC03C5AA@helium.ruby-lang.org>,
まつもと ゆきひろです
In article <1048256492.877945.30145.nullmailer@picachu.netlab.jp>,
まつもと ゆきひろです
高橋征義です。
In article <20030326.151120.41647198.takahashi@twinspark.co.jp>,
In article <008c01c2f360$9ac1b030$85222fc0@sarion.co.jp>,
In article <003301c2f42d$8e60cf10$85222fc0@sarion.co.jp>,
なひです。
もりきゅうです。
In article <20030328080008J.maki@rubycolor.org>,
In article <20030408023633B.maki@rubycolor.org>,
In article <20030327085213Z.maki@rubycolor.org>,
In article <20030401.194831.74754691.takahashi@twinspark.co.jp>,
In article <1048256492.877945.30145.nullmailer@picachu.netlab.jp>,
別の問題なんですが、鬼車入り ruby 1.6 で以下のエラーが出るのは
In article <20030310030319.390374A6@helium.ruby-lang.org>,
[#19698] 1.8.0 preview2 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
渡辺哲也です。
わたなべです。
渡辺哲也です。
わたなべです。
渡辺哲也です。
わたなべです。
[#19705] 1.8.0 preview2 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#19712] bug in cgi.rb? — Masaki Fujimoto <fujimoto@...>
はじめまして。ふじもとと申します。
[#19741] Re: File.open with block calls IO#close even if it is overriden — "TOYOFUKU Chikanobu" <toyofuku@...>
豊福です。
[#19751] (1.8.0-preview2) Proc#call — Fukumoto Atsushi <fukumoto@...>
1.8.0-preview2 で、 Proc#call の動作がへんです。
なかだです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
新井です。
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
咳といいます。
まつもと ゆきひろです
咳といいます。
まつもと ゆきひろです
前田です。
まつもと ゆきひろです
前田です。
[#19771] IO#initialize is not called from IO.pipe and IO.popen — Tanaka Akira <akr@...17n.org>
ふと(というか気がつくべくして)、気がついたのですが、
なかだです。
In article <200303081816.h28IGAO20114@sharui.nakada.kanuma.tochigi.jp>,
[#19774] [ruby-core:00918] [1.8.0-preview2] make install — Minero Aoki <aamine@...>
あおきです。
[#19801] RSTRING(str)->ptr — nobu.nakada@...
なかだです。
まつもと ゆきひろです
こんばんは。nyasu@3web です。
なかだです。
[#19820] 1.8.0 の終了コードがおかしい? — Shin-ichiro HARA <sinara@...>
原です。
[#19826] SEGV on Rubicon with ruby -w — Tanaka Akira <akr@...17n.org>
ふと、Rubicon を ruby -w で動かすと core を吐くことがあることに気がつ
[#19830] lib/tracer.rb and Thread.critical — Fukumoto Atsushi <fukumoto@...>
[#19832] [ruby-talk:66990] README.EXT.ja seems to have more info... — Kazuo Saito <ksaito@...>
斉藤です。
斉藤です。
新井です。
[#19837] [BUG] (0...3).max/ruby-1.8.0 preview2 — Shin-ichiro HARA <sinara@...>
原です。
まつもと ゆきひろです
原です。
[#19865] dl in $SAFE=4 — Minero Aoki <aamine@...>
あおきです。
まつもと ゆきひろです
At Fri, 21 Mar 2003 23:33:11 +0900,
まつもと ゆきひろです
At Sun, 23 Mar 2003 08:19:10 +0900,
In article <200303230210.h2N2A57t014593@smtp8.dti.ne.jp>,
まつもと ゆきひろです
In article <1048483232.298501.13178.nullmailer@picachu.netlab.jp>,
[#19897] Proc#call parameter assignment — "NAKAMURA, Hiroshi" <nakahiro@...>
なひです。
まつもと ゆきひろです
なひです。
[#19924] Re: — Akio Takenaka <redmagic@...8.xrea.com>
はじめまして、Ruby初心者:竹中です。
[#19927] Pre-commit check failed — UENO Katsuhiro <unnie@...>
うえのです。
[ruby-dev:19865] dl in $SAFE=4
あおきです。
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;