#24544: core.files.images.get_image_dimensions broken on some valid PNG images
-------------------------------------+-------------------------------------
Reporter: artscoop | Owner: nobody
Type: Uncategorized | Status: new
Component: File | Version: 1.7
uploads/storage |
Severity: Normal | Resolution:
Keywords: PIL | Triage Stage:
| Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by artscoop):
* needs_better_patch: => 0
* needs_tests: => 0
* needs_docs: => 0
Old description:
> Hi,
> second time I find a bug in the same function. Here, the function failed
> (exception raised and not caught) on a valid PNG file (this image:
> https://mega.co.nz/#!W0tXzBAK!iLprbqkVWFAzfcn2GUDRGHiH8Pxyi4DxCQi580shcec).
> The error raised by PIL is a `struct.error`, which should be expected but
> is not caught by the chunk feeder loop.
>
> The feeder knows this
>
> {{{
> except zlib.error as e:
> # ignore zlib complaining on truncated stream, just feed
> more
> # data to parser (ticket #19457).
> if e.args[0].startswith("Error -5"):
> pass
> else:
> raise
> }}}
>
> but does not know this
>
> {{{
> from struct import error
> ...
>
> except struct.error:
> pass
> }}}
New description:
Hi,
second time I find a bug in the same function. Here, the function failed
(exception raised and not caught) on a valid PNG file (this image:
https://mega.co.nz/#!W0tXzBAK!iLprbqkVWFAzfcn2GUDRGHiH8Pxyi4DxCQi580shcec).
The error raised by PIL is a `struct.error`, which should be expected but
is not caught by the chunk feeder loop.
The feeder knows this
{{{
except zlib.error as e:
# ignore zlib complaining on truncated stream, just feed
more
# data to parser (ticket #19457).
if e.args[0].startswith("Error -5"):
pass
else:
raise
}}}
but does not know this
{{{
from struct import error
...
except struct.error:
pass
}}}
when you catch the proper exception, the file header fed to the parser
becomes correct starting at offset 9214.
The good news is, it does not need tests.
--
--
Ticket URL: <https://code.djangoproject.com/ticket/24544#comment:1>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/066.a562dff3a8d59dfd050455cf35c13b39%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.