2

当我尝试使用带有 Rmagick 的 Carrierwave 将图像上传到 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

我怀疑这将是它唯一的错误。您可以使用其他工具,例如“文件”来验证文件格式。

此外,您应该考虑一种在 ruby​​ 崩溃时可以恢复的方法。您可以在后台运行一个额外的进程。但是您应该确保您有额外的检查,以便在有人试图反复使您的软件崩溃时做出响应。否则,您很容易成为拒绝服务的目标。

于 2011-07-02T22:02:14.570 回答