Project

General

Profile

Actions

Backport #8064

closed

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

Added by kosaki (Motohiro KOSAKI) about 11 years ago. Updated almost 11 years ago.


Description

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

Updated by nagachika (Tomoyuki Chikanaga) about 11 years ago

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

Updated by kosaki (Motohiro KOSAKI) about 11 years ago

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

Updated by nagachika (Tomoyuki Chikanaga) almost 11 years ago

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

Updated by kosaki (Motohiro KOSAKI) almost 11 years ago

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

Updated by nagachika (Tomoyuki Chikanaga) almost 11 years ago

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

Actions #6

Updated by nagachika (Tomoyuki Chikanaga) almost 11 years ago

  • 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: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0