[DRE-maint] Bug#1006374: graphicsmagick breaks ruby-mini-magick autopkgtest: Failure/Error: expect(subject["EXIF:Flash"]).to eq "0"

Bob Friesenhahn bfriesen at simple.dallas.tx.us
Sat Feb 26 15:56:06 GMT 2022


On Fri, 25 Feb 2022, László Böszörményi wrote:
> This should be it. Is your GM the latest version from Mercurial?
>
>> Image: /home/bfriesen/src/minimagick.git/spec/fixtures/exif.jpg
>>      Exif Version: 0220
>>      Date Time Original: 2016:11:12 09:17:56
>>      Flash: 0
> Package ruby-mini-magick check tree values: EXIF:Flash,
> DateTimeOriginal and ExifVersion. With GM 1.3.37 it succeeds and gets
> real values in order 0, a string and 0220 just like in your dump. But
> with the mentioned GM commit the results are in order "", nil and nil.
> Maybe the GM output or its variable types changed somehow and now
> ruby-mini-magick can't parse that? Needs more investigation. I think
> tomorrow in the evening (CET) I will arrive back home and will try to
> support you with more details.

I believe that the problem is that mini-magick is retrieving EXIF 
attributes in 'ping' mode but the changeset which caused the problem 
only returns the attributes if the image data was read.  The solution 
was just to move some code.

GraphicsMagick changset 16670:90e1c92a709c addresses this issue, and 
the fixes are in the 1.4.020220226 signed snapshot.

That same snapshot also addresses build problems with development 
libxml2 which seems to have removed FTP protocol support.

FYI, the change to the way JPEG embedded profiles are read is due to a 
denial of service concern.  JPEG stores embedded profiles in 
several/many chunks.  The denial of service concern is that a 
reasonably sized JPEG file can be constituted mostly of embedded 
profile chunks with very little compressed image data in each chunk. 
In this case the reader can take a very long time to "read" image 
image due to handling embedded profile chunks as the JPEG file is 
parsed.  The new approach improves the efficiency if there are many 
tiny chunks.

The purpose of 'ping' mode is to avoid expensive operations while 
retrieving basic properties.  In this particular case, the harm would 
already have been done even in 'ping' mode so returning the profiles 
does not incur any additional cost.

Bob
-- 
Bob Friesenhahn
bfriesen at simple.dallas.tx.us, http://www.simplesystems.org/users/bfriesen/
GraphicsMagick Maintainer,    http://www.GraphicsMagick.org/
Public Key,     http://www.simplesystems.org/users/bfriesen/public-key.txt


More information about the Pkg-ruby-extras-maintainers mailing list