ちょっとしたメモ書き。
経緯
ちょっとconvert
コマンドでPNGファイルをPDFにしたかっただけ。
現象
PNG形式のファイルをPDF形式に変換しようとすると以下のようエラーとなる。
$ convert image-001.png -units PixelsPerInch -density 72x72 output_001.pdf
convert: not authorized `PDF' @ error/constitute.c/IsCoderAuthorized/408.
どうやら脆弱性対策の一環。不正な画像ファイルの変換時にGhostscriptのバグを突かれるとまずいという話。
セキュリティ対策でGhostscriptを呼び出すタイプの拡張子が処理対象から外されている。
- Ghostscript の -dSAFER オプションの脆弱性に関する注意喚起
- Mogrify and Convert both throw "not authorized" error · Issue #1310 · ImageMagick/ImageMagick
対処
ImageMagickの設定ファイルのありかを特定、一時的に設定を変える。
Homebrewでインストールしている関係で手元のマシンではpolicy.xml
は以下の場所。
/usr/local/Cellar/imagemagick/7.0.8-11_1/etc/ImageMagick-7/policy.xml
7.0.8-11_1
の部分はバージョン依存。
このフィアルをバックアップしたうえで書き換える。
<policy domain="coder" rights="none" pattern="{EPS,PS2,PS3,PS,PDF,XPS}" />
この行から,PDF
という箇所を削除。
注意
作業が完了したら設定をもとに戻しておく。