From 4adb20ebb4bcd615c93c6c0a4d306b40c6938fff Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 4 May 2016 10:32:16 +0530 Subject: [PATCH] Also prevent ImageMagick identify routine from touching images other than the core types --- src/calibre/utils/magick/__init__.py | 6 ++++++ src/calibre/utils/magick/draw.py | 6 ++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/calibre/utils/magick/__init__.py b/src/calibre/utils/magick/__init__.py index e9ae4459f1..8a5c1eacde 100644 --- a/src/calibre/utils/magick/__init__.py +++ b/src/calibre/utils/magick/__init__.py @@ -235,6 +235,12 @@ class Image(_magick.Image): # {{{ _magick.Image.quantize(self, number_colors, colorspace, treedepth, dither, measure_error) + def identify(self, data): + fmt = what(None, data) + if fmt not in {'gif', 'png', 'jpeg', 'jpeg2000', 'webp'}: + raise ValueError('Unsupported image format: %s' % fmt) + return _magick.Image.identify(self, data) + def trim(self, fuzz): try: _magick.Image.remove_border(self, fuzz) diff --git a/src/calibre/utils/magick/draw.py b/src/calibre/utils/magick/draw.py index 379796e47c..1750e0e4ac 100644 --- a/src/calibre/utils/magick/draw.py +++ b/src/calibre/utils/magick/draw.py @@ -141,9 +141,6 @@ def identify_data(data): (width, height, format) or raises an Exception if data is not an image. ''' - if data.startswith(b'