2

Carrierwave と Rmagick を使用して、Heroku の自分のサイトに画像をアップロードしようとしたときに、セグメンテーション エラーが発生しました。

これは、エラー ログ出力の一部です。

ruby: jpc_dec.c:1072: jpc_dec_tiledecode: Assertion `dec->numcomps == 3' failed.
/app/.bundle/gems/ruby/1.9.1/gems/carrierwave-0.5.4/lib/carrierwave/processing/rmagick.rb:248: [BUG] Segmentation fault
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux]

.jpg調査の結果、正しい拡張子ではなく、拡張子を持つ JPEG2000 ファイルをアップロードしようとしたため、セグメンテーション違反が発生しました.jp2

これは Rmagick のバグですか?

さらに重要なことは、サイトのユーザーが間違った拡張子の画像を送信してこのセグメンテーション違反を引き起こすのを防ぐことは可能ですか?

ありがとう!

4

1 に答える 1

1

これが唯一のエラーになるとは思えません。「file」などの別のツールを使用して、ファイル形式を確認できます。

また、Ruby がクラッシュした場合に復旧できるようにする方法も考えておく必要があります。バックグラウンドで追加のプロセスを実行できます。ただし、誰かが繰り返しソフトウェアをクラッシュさせようとした場合に対応できるように、追加のチェックを実施する必要があります。そうしないと、簡単にサービス拒否の対象になります。

于 2011-07-02T22:02:14.570 に答える