[#26266] pragma on ripper — nobuyoshi nakada <nobuyoshi.nakada@...>

なかだです。

15 messages 2005/06/02

[#26312] rb_gc_mark_threads spin — Tanaka Akira <akr@...17n.org>

最近、とあるプログラム(五月雨)が、無限ループに陥ることが何回かありました。

32 messages 2005/06/09
[#26323] Re: rb_gc_mark_threads spin — Tanaka Akira <akr@...17n.org> 2005/06/10

In article <TYOMLEM04Rqf69aZbLA0000002d@tyomlvem02.e2k.ad.ge.com>,

[#26329] Re: rb_gc_mark_threads spin — nobu@... 2005/06/10

なかだです。

[#26331] Re: rb_gc_mark_threads spin — Tanaka Akira <akr@...17n.org> 2005/06/11

In article <200506101543.j5AFhToG009328@sharui.nakada.niregi.kanuma.tochigi.jp>,

[#26333] Re: rb_gc_mark_threads spin — Tanaka Akira <akr@...17n.org> 2005/06/11

In article <8764wlil9l.fsf@m17n.org>,

[#26334] Re: rb_gc_mark_threads spin — nobu@... 2005/06/11

なかだです。

[#26337] Re: rb_gc_mark_threads spin — Tanaka Akira <akr@...17n.org> 2005/06/11

In article <200506111335.j5BDZkoG019423@sharui.nakada.niregi.kanuma.tochigi.jp>,

[#26405] WEBrick DoS vulnerability — Tanaka Akira <akr@...17n.org>

NetBSD 2.0 で WEBrick を使って HTTP サーバを動かした場合、クライアント

24 messages 2005/06/29
[#26477] Re: WEBrick DoS vulnerability — GOTOU Yuuzou <gotoyuzo@...> 2005/07/08

ごとうゆうぞうです。

[#26480] Re: WEBrick DoS vulnerability — Tanaka Akira <akr@...17n.org> 2005/07/08

In article <20050708.175802.957830318.gotoyuzo@sawara.does.notwork.org>,

[#26481] Re: WEBrick DoS vulnerability — GOTOU Yuuzou <gotoyuzo@...> 2005/07/08

In message <87fyupzgcq.fsf@m17n.org>,

[#26421] Subversion — Shugo Maeda <shugo@...>

前田です。

24 messages 2005/06/30
[#26422] Re: Subversion — Yukihiro Matsumoto <matz@...> 2005/06/30

まつもと ゆきひろです

[#26423] Re: Subversion — "U.Nakamura" <usa@...> 2005/06/30

こんにちは、なかむら(う)です。

[ruby-dev:26332] Re: ruby_setenv dumps core with mod_ruby/1.4.2

From: "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
Date: 2005-06-11 10:39:13 UTC
List: ruby-dev #26332
山本です。

>えーと、どのくらい動作が違うのかコードを見てもよく分からない
>んですが。ちょっときれいになっているのは認めますが。
>もうちょっと説明してくださいませんか。

違いがわからないというのは、オリジナルと私のパッチの違いが
わからない、ということでしょうか?(私の出した2つのパッチに
動作の違いはありません。単に同じコードが2つあって冗長なので
まとめただけです)

Index: hash.c
===================================================================
RCS file: /src/ruby/hash.c,v
retrieving revision 1.128.2.11
diff -u -w -b -p -r1.128.2.11 hash.c
--- hash.c	28 Feb 2005 02:45:20 -0000	1.128.2.11
+++ hash.c	10 Jun 2005 08:47:16 -0000
@@ -1855,7 +1855,9 @@ ruby_setenv(name, value)
 	environ[i+1] = 0;	/* make sure it's null terminated */
     }
     else {
-	if (environ[i] != origenviron[i])
+	char **envp = origenviron;
+	while (*envp && *envp != environ[i]) envp++;
+	if (!*envp)
 	    free(environ[i]);
     }
     environ[i] = ALLOC_N(char, strlen(name) + strlen(value) + 2);

origenviron は起動時に environ だった元々の環境変数を退避してるだけなので
長さは変わらず、(少なくとも grep したところでは変更されていないようでした)
environ のほうは ruby 側で環境変数を追加するたびに伸びていくので、そのうち
origenviron の範囲外の値が int i=envix(name) で返ってきて origenviron[i] が
まずいんじゃないかと思いました。上の !value なときの条件判断には
こんな問題はないので、こちらが正しかろうと思い流用しました。

本当は environ の要素は全部 strdup されたものなので origenviron を
調べなくてもいきなり free してよさそうに思ったのですが、わざわざ
条件判断で弾いてるからには理由があるのだろうと思って

>>たぶん、条件文は万が一にも origenviron な文字列を free しないようにする
>>セーフガードだと思うので、(ruby 以外が environ に直接ポインタを設定してしまうとか)

という理由をとってつけたのです。

# とはいえ、2.times { 50.times {|i| ENV[i.to_s] = i.to_s } }
# なんてしても BeOS ではいっこうに落ちなかったのですが・・・

In This Thread