Project

General

Profile

This project is closed and read-only.

Actions

Backport #8064

closed

r39687 - io.c (rb_update_max_fd): use ATOMIC_CAS のバックポート

Backport #8064: r39687 - io.c (rb_update_max_fd): use ATOMIC_CAS のバックポート

Added by kosaki (Motohiro KOSAKI) over 13 years ago. Updated over 13 years ago.


Description

現状、1.9.3と2.0において、rb_update_max_fdが排他制御されずに呼ばれているので最大FDを間違って更新し、
結果fd leakにつながる可能性があります。
これはsensitive dataのリークにつながるかどうかはスクリプト次第ですが、塞いでおいたほうが心の安全が図れそうです

Updated by nagachika (Tomoyuki Chikanaga) over 13 years ago Actions #1 [ruby-dev:47181]

r39687 と一緒に変数の型を変更している r39776 もバックポートしようと思います。

Updated by kosaki (Motohiro KOSAKI) over 13 years ago Actions #2 [ruby-dev:47200]

あ、すいません。これちょっと待ってください。
r39687書いたときはちょっと考慮できていなかったのですが、型を変更してしまうとどこが壊れるかわからないので、
素直にmutex導入して、変更最小限修正に出来ないか一度考えたい。

Updated by nagachika (Tomoyuki Chikanaga) over 13 years ago Actions #3 [ruby-dev:47274]

こちらどうでしょうか。急がなくてもいいと思いますが、r39687 だけ入れていてもあまり意味はないでしょうか?

Updated by kosaki (Motohiro KOSAKI) over 13 years ago Actions #4 [ruby-dev:47287]

見なおしたけど r40438 入れれば、触ってる場所一箇所になるから僕的に許せる感じ。

Updated by nagachika (Tomoyuki Chikanaga) over 13 years ago Actions #5 [ruby-dev:47300]

ありがとうございます。
一旦 r39687, r39776, r40438 をマージして閉じようと思います。
追加で変更があればまた backport チケットを作ってください。

Updated by nagachika (Tomoyuki Chikanaga) over 13 years ago Actions #6

  • Status changed from Assigned to Closed
  • % Done changed from 0 to 100

This issue was solved with changeset r40490.
Motohiro, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


merge revision(s) 39687,39776,40438: [Backport #8064]

* io.c (rb_update_max_fd): use ATOMIC_CAS because this function
  is used from timer thread too.

* io.c (rb_fd_fix_cloexec): use rb_update_max_fd().
Actions

Also available in: PDF Atom