Repository navigation
chore(deps): update dependency strukturag/libheif to v1.23.7 - #515
Merged
Merged
Conversation
Contributor
Author
Edited/Blocked NotificationRenovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR. You can manually request rebase by checking the rebase/retry box above. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #515 +/- ##
=========================================
Coverage 100.00% 100.00%
=========================================
Files 10 10
Lines 1169 1169
=========================================
Hits 1169 1169
🚀 New features to boost your workflow:
|
bigcat88
force-pushed
the
renovate/strukturag-libheif-1.x
branch
from
October 30, 2026 09:32
3d37ab3 to
970f11a
Compare
bigcat88
approved these changes
Oct 30, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
v1.23.6→v1.23.71.23.6→1.23.7Release Notes
strukturag/libheif
v1.23.7: - security releaseCompare Source
v1.23.7 is a security and bugfix release. It is ABI- and API-compatible with v1.23.6 and is a drop-in replacement.
Fourteen of the fixed issues are rated high, so all users are advised to upgrade.
Security fixes
(CVE numbers will be added when assigned.)
num_ticks_per_picture_minus_1was read with a UVLC reader that stops after 20 leading zero bits, although AV1 allows 31, and the error was ignored. The sequence header was then skipped, or scanned from the middle of the code where it could yield a small decoy size, and libaom allocated the real, much larger frame. The AV1 UVLC reader now follows the AV1 specification, and a sequence header that cannot be scanned completely is rejected. (high)iovl,idenorgrid) can share one coded input image. Their bit-depth queries read the decoder data of that input while another tile thread replaced it during decoding. A crafted file could crash the application or corrupt the heap with default options. The bit-depth queries now lock the decode mutex of the queried item. Only v1.23.6 is affected. (high)heif_image_extend_padding_to_size()could be reached with such a size by re-encoding a sequence whose frames have different sizes with the x265 or x264 sequence encoder. Padding now refuses a size below the image or any of its planes, checks all planes before changing them, and the sequence encoders refuse a frame whose size differs from the first frame. (high)heif_context_encode_thumbnail()returned success without setting the output handle when the image already fits into the bounding box. Callers that released the handle, among themheif-enc -tand the C++ wrapper, freed an uninitialized or stale pointer (use-after-free, double free). The handle is now set to NULL in that case, as the API documentation says. (high)clapcrop of an 8192x8192 overlay. A 2.6 kB file took 26 seconds to decode. Each decode now has a pixel budget of twice the size of the distinct images it uses (at least 2048x2048, at mostmax_image_size_pixels), single-tile decodes get their share of it, an exceeded security limit in a grid tile is an error also without strict decoding, and grid tiles outside of the image are not decoded. (high)irot,imirorclapproperty, andidenchains multiplied them: a 28 kB file took 73 seconds to decode. An item may now have at most one association of each of these properties, as HEIF requires, and at most 32 transformations are applied along a decode path. (high)colrassociations. Reading the file regenerated and compared a colour profile property for every association. Reading and encoding now store colour profiles separately, so that opening a file does not create properties. (high)heif_track_decode_next_image()could run for minutes, also withignore_sequence_editlist. The number of samples that are decoded without returning frames is now limited per codec, andignore_sequence_editliststops after the original samples. (high)moovbox. Thestscentry of every chunk was looked up by a linear scan, so a file with many chunks andstscentries took seconds to minutes to open, also when the application only reads the still image. The lookup is now a binary search, and anstsctable whosefirst_chunkvalues decrease is refused. (high)heifiohelper ofheif-dec,heif-thumbnailerandheif-enc. The tag search followed IFD pointers in loops. The traversal is now bounded by the size of the Exif data. Applications that use only the library, and the gdk-pixbuf loader, are not affected. (high)heif_image_scale_image()and used an uninitialized image pointer, which gdk-pixbuf later released. A small valid file made the scaling fail when an application loaded it with a fixed width or height and kept the aspect ratio (a 1x65536 AVIF loaded at a width of 3840 requests a 2.9 TB image), which crashed the application. The loader now checks the result and refuses output sizes abovemax_image_size_pixels. (medium)heif-dec -Sandheif-infoprinted and released an uninitialized URI pointer when aurimsample entry has nouribox. Depending on the build, they crashed, or read and freed the URI of a previous track a second time. The library is not affected. (low)All of these issues were found by Anthropic's OSS Scanner. Thanks also to @iPlayForSG and @SounLabs, who reported GHSA-74mj-m37q-h3q9 independently.
Hardening
heif_image_scale_image()andheif_track_get_urim_sample_entry_uri_of_first_cluster()set their output pointer to NULL on error, so that a caller that misses the error check does not use an uninitialized pointerint, and versions 1.1.0 to 1.1.2 did not reject the negative valuesaizis bounded by the sample count of thesaizbox, as it already was for variable sizesstd::regex, whose recursion overflowed the stack for long sync data (about 30,000 characters). Timestamps are checked as the WebVMT specification defines them (minutes and seconds up to 59, three fraction digits, hours that fit the 32-bit millisecond counter), invalid hex and base64 data and payloads that are not JSON are reported, and a missing file or a file without WEBVMT signature is an error (#1941)Bug fixes
colr,clli,mdcv,amve,ndwt,pasp) is attached to the decoded frames, and an NCLX profile in the sample entry takes precedence over the bitstream, with the same full-range correction and mismatch warnings as for still images (#1938, @dlemstra)data_reference_indexof theurimsample entry in URI metadata tracks was written uninitialized; it is now 1stsctable that libheif writes for a track with several chunks numbers its entries instead of letting all of them start at chunk 1max_memory_block_size, and an error of libde265 for a NAL unit is reported (#1936)clapcrop is written (Firefox does not display AVIF images withclap) (#1945). 10-bit images with alpha could not be encodedtRNSchunk was dropped (#1947), and 16-bit grayscale PNG images with alpha were encoded wrongImageHandlegets functions for the nominal diffuse white luminance (@therahedwig)Behavior changes
heif_suberror_Security_limit_exceeded:irot,imirorclapis refusedstsctable with decreasingfirst_chunkvalues is refusedheif_image_extend_padding_to_size()returns an error when a requested dimension is smaller than the imageheif_context_encode_thumbnail()returns a NULL handle when no thumbnail is neededmimeitems) are decompressed when they are first read instead of while the file is opened. A file with a compressed metadata item that cannot be decompressed now opens: the item is listed,heif_image_handle_get_metadata()returns the error andheif_image_handle_get_metadata_size()returns 0. Before, a corrupt Exif ormimeitem made the whole file fail to open, and an item with an unsupported content encoding was left out of the listmax_image_size_pixelsConfiguration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about these updates again.
This PR was generated by Mend Renovate. View the repository job log.