]> granicus.if.org Git - libjpeg-turbo/commit
Fix unsigned int overflow in libjpeg memory mgr.
authorDRC <information@libjpeg-turbo.org>
Wed, 7 Sep 2016 21:40:10 +0000 (16:40 -0500)
committerDRC <information@libjpeg-turbo.org>
Thu, 8 Sep 2016 21:17:05 +0000 (16:17 -0500)
commita09ba29a55b9a43d346421210d94370065eeaf53
treea7d3dfdc0c2eea40fd03c4005fcfe8300cfda281
parent8ce2c9119a995ef6280f8bba375aac7effb9b571
Fix unsigned int overflow in libjpeg memory mgr.

When attempting to decode a malformed JPEG image (refer to
https://bugzilla.mozilla.org/show_bug.cgi?id=1295044) with dimensions
61472 x 32800, the maximum_space variable within the
realize_virt_arrays() function will exceed the maximum value of a 32-bit
integer and will wrap around.  The memory manager subsequently fails
with an "Insufficient memory" error (case 4, in alloc_large()), so this
commit simply causes that error to be triggered earlier, before UBSan
has a chance to complain.

Note that this issue did not ever represent an exploitable security
threat, because the POSIX-based memory manager that we use doesn't ever
do anything meaningful with the value of maximum_space.
jpeg_mem_available() simply sets avail_mem = maximum_space, so the
subsequent behavior of the memory manager is the same regardless of
whether maximum_space is correct or not.  This commit simply removes a
UBSan warning in order to make it easier to detect actual security
issues.
ChangeLog.md
jmemmgr.c