Backport #8064
closed
r39687 - io.c (rb_update_max_fd): use ATOMIC_CAS のバックポート
Added by kosaki (Motohiro KOSAKI) about 11 years ago.
Updated about 11 years ago.
Description
現状、1.9.3と2.0において、rb_update_max_fdが排他制御されずに呼ばれているので最大FDを間違って更新し、
結果fd leakにつながる可能性があります。
これはsensitive dataのリークにつながるかどうかはスクリプト次第ですが、塞いでおいたほうが心の安全が図れそうです
r39687 と一緒に変数の型を変更している r39776 もバックポートしようと思います。
あ、すいません。これちょっと待ってください。
r39687書いたときはちょっと考慮できていなかったのですが、型を変更してしまうとどこが壊れるかわからないので、
素直にmutex導入して、変更最小限修正に出来ないか一度考えたい。
こちらどうでしょうか。急がなくてもいいと思いますが、r39687 だけ入れていてもあまり意味はないでしょうか?
見なおしたけど r40438 入れれば、触ってる場所一箇所になるから僕的に許せる感じ。
ありがとうございます。
一旦 r39687, r39776, r40438 をマージして閉じようと思います。
追加で変更があればまた backport チケットを作ってください。
- 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().
Also available in: Atom
PDF
Like0
Like0Like0Like0Like0Like0Like0