|
昨日のカウンタ: 今日のカウンタ: |
と書くとかっこよく思えるから不思議。ぉぃ (;_;) 一度推測でモノを書いてしまうとその気がなくてもウソを重ねるはめになる、という教訓を得られたという事で一つ。(本業でも「君って学習能力ないなぁ」としみじみ言われてしまうような人間なんで、前にも同じ教訓を得ているのかも(;_;) )
何かと言えば、またまた昨日の修正です。きっとこれでウソも収束すると期待しています。ご迷惑をおかけした皆様にはお詫び申し上げます。申し上げるだけですが。
で、本題ですが、String::chomp() には罪がなかったようです。昨日の日記の eval の解決編を眺め直して「ただ単に taint な文字列をパスの一部に含むファイル名をオープンできてないだけではないか」とさっき思いつきました。遅いってば・・・。そんな訳で
pid = IO.readlines(CronPidFile)[0].to_i.to_s
を
pid = IO.readlines(CronPidFile)[0].chomp.untaint
に戻しても動くことを確認しました。
なるほど $/ = "\n" とか chomp("\n") とか ruby -012 ... とかでも動作が変わらなかったのには納得です。
さて、CronInetConfEditの方で目途が経ってきたので、cron_inet.rb と CronInetConfEdit を連携させるよう作業中です。cron_inet.rb の方の作業の方が多いのですが、やはり原因不明のエラーで cron_inet.rb が止まったりします。でも手順が見えてきたのでメモしておきます。
launcher からルート権限で起動させる Ruby スクリプトや、launcher からルート権限で起動したアプリから呼び出される Ruby スクリプト限定の話:
1. sudo 等でターミナルから動かしてみて、止まったらエラー表示にてバグ修正(当たり前過ぎますが),
2. /tmp/hoge.log 等に状態などを保存するコードを仕込む(古典的です),
3. launcher から起動してみて、止まったら /tmp/hoge.log をみてどの辺りで止まったかあたりをつけて、怪しそうな変数に .untaint を仕込む。
取り敢えずこれでなんとかなりそうな雰囲気です、今のところ。