[#29700] ruby NKF モジュールの CP932 系エンコーディングパッチ — MORIYAMA Masayuki <moriyama@...>

ミラクルリナックスの森山です。

10 messages 2006/10/27

[#29726] cgi.rbのDoS脆弱性について — MoonWolf <moonwolf@...>

MoonWolfです。

74 messages 2006/10/31
[#29728] Re: cgi.rbのDoS脆弱性について — Yukihiro Matsumoto <matz@...> 2006/11/01

まつもと ゆきひろです

[#29729] Re: cgi.rbのDoS脆弱性について — MoonWolf <moonwolf@...> 2006/11/01

MoonWolfです。

[#29731] Re: cgi.rbのDoS脆弱性について — Yukihiro Matsumoto <matz@...> 2006/11/01

まつもと ゆきひろです

[#29745] Re: cgi.rbのDoS脆弱性について — MoonWolf <moonwolf@...> 2006/11/02

MoonWolfです。

[#29751] Re: cgi.rbのDoS脆弱性について — "U.Nakamura" <usa@...> 2006/11/02

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

[#29753] Re: cgi.rbのDoS脆弱性について — MoonWolf <moonwolf@...> 2006/11/03

MoonWolfです。

[#29754] Re: cgi.rbのDoS脆弱性について — "U.Nakamura" <usa@...> 2006/11/03

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

[#29756] Re: cgi.rbのDoS脆弱性について — MoonWolf <moonwolf@...> 2006/11/03

MoonWolfです。

[#29759] Re: cgi.rbのDoS脆弱性について — "U.Nakamura" <usa@...> 2006/11/03

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

[#29780] Re: cgi.rbのDoS脆弱性について — MoonWolf <moonwolf@...> 2006/11/04

MoonWolfです。

[#29784] Re: cgi.rbのDoS脆弱性について — "U.Nakamura" <usa@...> 2006/11/04

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

[#29786] Re: cgi.rbのDoS脆弱性について — MoonWolf <moonwolf@...> 2006/11/04

MoonWolfです。

[#29791] Re: cgi.rbのDoS脆弱性について — Yukihiro Matsumoto <matz@...> 2006/11/04

まつもと ゆきひろです

[#29811] Re: cgi.rbのDoS脆弱性について — MoonWolf <moonwolf@...> 2006/11/05

MoonWolfです。

[#29818] Re: cgi.rbのDoS脆弱性について — Yukihiro Matsumoto <matz@...> 2006/11/05

まつもと ゆきひろです

[#29826] Re: cgi.rbのDoS脆弱性について — MoonWolf <moonwolf@...> 2006/11/05

MoonWolfです。

[#29761] Re: cgi.rbのDoS脆弱性について — 植田 裕之 <ueda@...> 2006/11/03

植田と申します。

[#29764] Re: cgi.rbのDoS脆弱性について — Yukihiro Matsumoto <matz@...> 2006/11/03

まつもと ゆきひろです

[ruby-dev:29698] *LDFLAGSについて

From: "Yutaka Kanemoto" <kinpoco@...>
Date: 2006-10-26 17:47:47 UTC
List: ruby-dev #29698
金本ともうします。
おせわになっています。

すこし前の以下のパッチ
* lib/mkmf.rb (init_mkmf): set default $LDFLAGS. Patch by Michal
 Suchanek <hramrach at centrum.cz>. [ruby-talk:216256]
により、AIXで拡張ライブラリのcompileが通らなくなったので調べました。

ひとつおたずねしたいのですが、*FLAGSという
変数について以下のように解釈したのですが、意図されているように
理解できていますでしょうか?
DLDFLAGS        *.soの共有ライブラリを作る時にリンカにわたしたいもの
XLDFLAGS        rubyコマンドをつくるとき"だけ"にリンカにわたしたいもの
LDFLAGS         いつでもわたしたいもの

といいますのも、以前configure.inで、AIXでは、
  LDFLAGS="-brtl -bE:ruby.imp"
とさせていただいたのですが、上記のパッチでこのパラメータが拡張ライブラリの
リンクにわたるようになりました。ruby.impはソースを展開したディレクトリに
ありますので、拡張ライブラリのリンク時にみつからないといわれるように
なってしまいました。

# Linuxの場合ですと、このpatchの影響で、拡張ライブラリのリンク時にも
# -rdynamic -Wl,-export-dynamicがわたるようになりました。

AIXでは拡張ライブラリのコンパイルにこれらのパラメータは必要ないので、
いままでLDFLAGSとしていたものを、XLDFLAGSにすればコンパイルはとおります。
ところが、今度はこのパラメータがminirubyにわたらなくなります。

この-bE:ruby.impオプションは、ruby.impというファイルに列挙された関数を
他のライブラリからみえるようにエクスポートするというものです。
これがないと、libruby-static.aのなかの関数を、拡張ライブラリが
アクセスできなくなります。

XLDFLAGSをminirubyにわたせばいいかと思ったのですが、
過去ログをみると、やはり、XLDFLAGSはrubyをリンクするときのみのためのもの
のようです。
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/19723
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/23588

minirubyにこのオプションがわたらない場合の現象としましては、
make installの途中でcoreを吐いてしまいます。
minirubyがetc.soのInit_etcにはいった中でおちています。
dbxでInit_etcにはいった時点でとめて、stepするとcoreになります。
minirubyの作成時に上記のオプションをつけますと、rb_define_moduleなどが
正常に呼べてこの問題が解消します。
このetc.soは、fileutils経由で呼ばれているようです。
etc.soがなければloadに失敗して、なくてもすむような処理が走り、
installは途中までうまくいくのですが、その後のドキュメントの
生成のときにinstruby.rbが呼んでいるfileutilsがetc.soを発見してしまって、
結局上述の理由でcoreを吐いてしまいます。
あるいは、すでにrubyがinstallしてあった場合はext/dlのコンパイルの
途中でやはりminirubyがcore dumpしてしまいます。

まとめますと、rubyとminirubyのリンク時にだけわたしたい
オプションがあるのでなんとかしたい。ということになります。

そこで提案なのですが、現在miniruby専用のLDFLAGSがありませんので、
MLDFLAGSなどとして、定義できるようにさせていただけませんでしょうか?
一応この案のパッチを添付します。
この方法なら他のplatformにご迷惑をおかけすることもないかなと思いました。
ただ、MLDFLAGSという名前がわかりにくいかもしれませんので、適切な名前を
命名していただきたいと思います。
あるいは、もしほかになにか方法があれば、方針をいただければ、
自分で作業したいと思います。

長々とどうもすいません。
よろしくおねがいいたします。
-- 
Yutaka KANEMOTO
http://d.hatena.ne.jp/kinpoco/

Attachments (1)

mldflags.diff (2.04 KB, text/x-diff)
Index: Makefile.in
===================================================================
RCS file: /src/ruby/Makefile.in,v
retrieving revision 1.55.2.18
diff -u -r1.55.2.18 Makefile.in
--- Makefile.in	1 Oct 2006 15:00:32 -0000	1.55.2.18
+++ Makefile.in	26 Oct 2006 17:30:18 -0000
@@ -38,6 +38,7 @@
 LDFLAGS = @STATIC@ $(CFLAGS) @LDFLAGS@
 EXTLDFLAGS = 
 XLDFLAGS = @XLDFLAGS@ $(EXTLDFLAGS)
+MLDFLAGS = @MLDFLAGS@
 EXTLIBS = 
 LIBS = @LIBS@ $(EXTLIBS)
 MISSING = @LIBOBJS@ @ALLOCA@
@@ -97,7 +98,7 @@
 
 miniruby$(EXEEXT):
 		@$(RM) $@
-		$(PURIFY) $(CC) $(MAINOBJ) $(MINIOBJS) $(LIBRUBY_A) $(LIBS) $(OUTFLAG)$@ $(LDFLAGS) $(MAINLIBS)
+		$(PURIFY) $(CC) $(MAINOBJ) $(MINIOBJS) $(LIBRUBY_A) $(LIBS) $(OUTFLAG)$@ $(LDFLAGS) $(MLDFLAGS) $(MAINLIBS)
 
 $(PROGRAM):
 		@$(RM) $@
Index: configure.in
===================================================================
RCS file: /src/ruby/configure.in,v
retrieving revision 1.212.2.62
diff -u -r1.212.2.62 configure.in
--- configure.in	1 Sep 2006 18:58:44 -0000	1.212.2.62
+++ configure.in	26 Oct 2006 17:30:19 -0000
@@ -1037,11 +1037,13 @@
         aix*)           if test "$GCC" = yes; then
                            : ${LDSHARED='gcc -shared'}
                            DLDFLAGS='-Wl,-G -eInit_$(TARGET)'
-                           LDFLAGS='-Wl,-brtl -Wl,-bE:ruby.imp'
+                           XLDFLAGS='-Wl,-brtl -Wl,-bE:ruby.imp'
+                           MLDFLAGS=$XLDFLAGS
                         else
                           : ${LDSHARED='/usr/ccs/bin/ld'}
                           DLDFLAGS='-G -eInit_$(TARGET)'
-                          LDFLAGS="-brtl -bE:ruby.imp"
+                          XLDFLAGS='-brtl -bE:ruby.imp'
+                          MLDFLAGS=$XLDFLAGS
                         fi
                         : ${ARCHFILE="ruby.imp"}
                         TRY_LINK='$(CC) $(LDFLAGS) -oconftest $(INCFLAGS) -I$(hdrdir) $(CPPFLAGS)'
@@ -1503,6 +1505,7 @@
 
 AC_SUBST(XCFLAGS)dnl
 AC_SUBST(XLDFLAGS)dnl
+AC_SUBST(MLDFLAGS)
 AC_SUBST(LIBRUBY_LDSHARED)
 AC_SUBST(LIBRUBY_DLDFLAGS)
 AC_SUBST(RUBY_INSTALL_NAME)

In This Thread

Prev Next