ruby-trunk-changes r38994 - r38999

今日は主に UNIXドメインソケットで auto binding 機能に対応する修正がありました。

shugo:r38994 2013-01-31 13:59:31 +0900

拡張ライブラリ socket の Addrinfo で UNIX ドメインソケットの path に空文字を渡された時に、bind(2) で auto bind という機能で自動的に抽象アドレス(abstract address)の名前が割り振られるのに倣って sock_len に sizeof(sa_family_t) を返すようにしています。またこれに追随して UNIX ドメインソケットの抽象アドレスかどうかの判定に空文字も条件に追加されるようにしています。 なお先日から UNIX ドメインソケットに NUL 文字('\0')が許容されるようだと書いていましたが、これは Linux の拡張である抽象アドレスという機能によるもので、名前の先頭を NUL 文字にすることで区別するようになっているそうでした。
参考URL:
http://linux.die.net/man/7/unix
http://linuxjm.sourceforge.jp/html/LDP_man-pages/man7/unix.7.html

svn:r38995 2013-01-31 13:59:36 +0900

version.h の日付更新。

zzak:r38996 2013-01-31 15:38:43 +0900

String#[ ]= の rdoc コメントに引数に正規表現が渡されて、マッチする部分文字列がなかった時に、単に無視されると書かれていたのですが、実際には IndexError が発生するのでドキュメントを修正しています。 https://github.com/ruby/ruby/pull/243

kosaki:r38997 2013-01-31 16:08:23 +0900

test/ruby/test_signal.rb のテストで STDOUT.sync = false とすべきところが sync = false とローカル変数になっていたのを修正しています。

nobu:r38998 2013-01-31 16:33:30 +0900

r38982 でトップレベルの未使用のローカル変数も警告を出すようにした時に -e の引数の時は抑制していたのですが、同様に eval に渡した文字列の中でも警告しないようにしています。 [ruby-core:51580] [Feature #7730]

charliesome:r38999 2013-01-31 21:55:37 +0900

Marshal.load の rdoc コメントに「信頼できないデータは渡してはいけない」という旨を追記しています。 [ruby-core:51765] [Bug #7759]
このチケットわたしも気になっていたんですけど、"and can lead to remote code execution." という部分はどういうケースを想定しているのかなぁ。 とりあえず dRuby がソケットから読んだものを Marshal.load するので該当するなぁと思いました。もっとも dRuby は Marshal は別にしても、アプリケーションレイヤで任意のメソッド呼べるようなことしてしまえると思うので、どちらにせよ信頼できないネットワークに解放しないほうが良いとは思いますが。