pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: pkgsrc/graphics/libheif



Module Name:    pkgsrc
Committed By:   ryoon
Date:           Wed Sep  2 14:50:24 UTC 2026

Modified Files:
        pkgsrc/graphics/libheif: Makefile distinfo

Log Message:
graphics/libheif: Update to 1.23.3

Changelog:
1.23.3:
v1.23.3 is a security and bugfix release. It is ABI- and API-compatible with
v1.23.2 and is a drop-in replacement.

One of the fixed issues is rated critical, so all users are strongly advised to
upgrade.

Security fixes

(CVE numbers will be added when assigned.)

  * CVE-2026-XXXXX (GHSA-x8r2-mggj-j6wr) Heap buffer overflow (write) in the
    uncompressed (unci) mixed-interleave decoder when the two chroma components
    declare different bit depths. Both the written bytes and the overflow
    length are controlled by the file. (critical)
  * CVE-2026-XXXXX (GHSA-8fmq-r4pf-7m57) Permanent decoder deadlock through a
    reference cycle between an image and its alpha auxiliary image. The alpha
    edge was not covered by the cycle guard and re-entered a held mutex. (high)
  * CVE-2026-XXXXX (GHSA-w7mc-p8jc-p853) Heap out-of-bounds read in the YCbCr
    4:2:0 to 16-bit interleaved RGB conversion when the chroma planes have a
    lower bit depth than luma. Heap memory could end up in the decoded image.
    YCbCr conversions with mismatched luma and chroma bit depths are now
    rejected. (high)
  * CVE-2026-XXXXX (GHSA-4jqm-2x34-6f6r) Heap buffer overflow in the SVT-AV1
    encoder plugin when encoding a high-bit-depth alpha channel, and a double
    free on its send-picture error path. (high)
  * CVE-2026-XXXXX (GHSA-hh47-fhqr-cj2r) Incomplete fix for GHSA-73p7-m7gg-w2jv
    : the tile range check of the unci decoder (without icef) could still
    overflow, allowing an out-of-bounds read. (medium)
  * CVE-2026-XXXXX (GHSA-4h82-g446-83fm) Heap out-of-bounds read when
    converting odd-height 4:2:0 frames of an uncompressed (uncv) image sequence
    to RGB. (medium)
  * CVE-2026-XXXXX (GHSA-9rj8-5mp5-26c9) Out-of-bounds read in the RGB to YCbCr
    identity-matrix color conversion when the R, G, and B planes have different
    bit depths. (medium)
  * CVE-2026-XXXXX (GHSA-gh5q-69gg-c964) A clap property combined with an
    oversized ispe reached an assert() in the Fraction arithmetic and aborted
    the process (incomplete fix for GHSA-jc8f-p23p-5hjg). An error is returned
    instead. (medium)
  * (GHSA-mw6f-29j3-76f4) Several smaller findings:
    heif_image_handle_get_depth_image_handle() and
    heif_image_handle_get_depth_image_representation_info() dereferenced a null
    pointer on files without a depth image; the TIFF input decoder of the
    example tools had an unbounded EXIF tag allocation and a division by zero
    on zero YCbCr subsampling; assert()s in the PNG input decoder are now error
    returns; integer overflow in the Go binding's ImageAccess.GetPlane();
    heif-view now verifies the decoded frame size before display. (medium)
  * (GHSA-8857-r8x5-7499) Undefined behavior (negative shift) in the HDR
    bit-depth up-conversion for target bit depths above 16. Such conversions
    are now rejected. (low)

Hardening

  * unci: fixed a pointer wrap on 32-bit builds in the tile decoders that walk
    the data with a raw pointer (bytealign and block component-interleave,
    block pixel-interleave). A huge row_align_size wrapped the pointer past the
    bounds check and read out of bounds (found by OSS-Fuzz)
  * unci: the per-tile decode path (heif_image_handle_decode_image_tile()) now
    runs the same uncC layout checks as the full-image path; a block-pixel
    layout with oversized component bit depths caused an undefined shift
  * unci: the sequence decode path rejects an oversized row_align_size like the
    still-image path
  * AVC SPS: variable-length fields are validated
  * Color conversion: fixed a negative shift when up-converting an alpha
    channel to more than twice its bit depth (e.g. 2-bit alpha with 12-bit
    color in an unci image), a signed overflow when compositing alpha on 16-bit
    images, and a missing chroma bit-depth check in the YCbCr 4:2:0 to 16-bit
    RGB conversion
  * Pixel plane allocation: the size computation is guarded against 64-bit
    overflow (reachable only with the image-size security limit disabled)
  * heif_region_item_add_region_polygon() checks its parameters (NULL pointer,
    negative point count)
  * Fixed a data race (broken double-checked locking) when pasting decoded grid
    tiles into the output image (#1888)
  * ID allocation: avoid an unsigned wrap when the maximum ID is reserved
    (fuzzer with -fsanitize=integer)

Bug fixes

  * Regression since v1.22.0: images with a clap crop, and small images whose
    coded frame is padded (hardware encoders), failed with "Security limit
    exceeded" even with limits disabled. The tightened decode size limit
    introduced with #1798 is now derived from the ispe size with a floor of
    256x256 (#1856)
  * Regression since v1.21.0: YCbCr images with more than 14 bits per pixel
    could not be converted to RGB. The 14-bit limit now applies only to the
    YCgCo-Re integer path (#1881)
  * ftyp box parse errors are reported as such instead of "No 'ftyp' box", and
    a brands security limit of 0 (LIBHEIF_SECURITY_LIMITS=off) is treated as no
    limit (#1872)
  * When no tile of a grid image could be decoded, the tile decoding error is
    returned instead of an unspecific error, and the missing-decoder error now
    names the compression format and an example plugin (#1876)
  * AVC: fixed the SPS conformance window crop unit scaling. Encoded AVC images
    with dimensions that are not a multiple of 16 got an oversized ispe and a
    spurious clap property, and then failed to decode (#1866)
  * iloc: reading a sub-range of an extent stored in idat failed with "Not
    enough data present in 'iloc'", so multi-tile or icef-compressed
    uncompressed images stored in idat could not be decoded
  * Files with a mime item whose content encoding is unknown or whose
    decompressor is not compiled in are no longer rejected as a whole. The
    item's raw data stays accessible through heif_item_get_item_data(). The
    "identity" content encoding is treated as no encoding
  * heif_item_get_item_data() crashed on an item that was just added to a
    context (in-memory extents are now served directly)
  * heif_context_add_item(), heif_context_add_mime_item(),
    heif_context_add_precompressed_mime_item(), and heif_context_add_uri_item()
    aborted on NULL strings or data and on a negative size; they return a usage
    error now. heif_context_add_item() wrote a file with a 'pict' handler and a
    bogus pitm that no reader accepted
  * Encoders write the pixel aspect ratio into the bitstream where the codec
    supports it (Extended_SAR in the HEVC/AVC/VVC VUI, JFIF density fields), so
    the bitstream agrees with the pasp property (#1860)
  * x264: nclx color signalling was silently not written into the SPS VUI,
    producing a warning about disagreeing colr box and bitstream on decode
  * SVT-AV1 (>= 4.0.0): the QP derived from the quality setting is no longer
    rounded to an integer (quarter-QP steps). The value is written directly
    into the encoder configuration, avoiding a locale-dependent string round
    trip and an unintended switch from CRF to CQP rate control (#1867)
  * aom: wrong chroma plane height for 4:2:2 input
  * rav1e: the encoder was configured with the storage bit depth instead of the
    actual bit depth
  * OpenJPH: high-bit-depth source samples were read as 8-bit
  * uvg266: the high-bit-depth plane copy dropped the bytes-per-sample factor
  * OpenJPEG: lossless encoding was still rate-limited, producing truncated
    codestreams with visible errors
  * FFmpeg decoder: 12, 14, and 16-bit monochrome images (including alpha
    planes of such images) are decoded; high-bit-depth JPEG and JPEG 2000 are
    returned at the coded bit depth instead of as scaled 16-bit; an nclx
    profile is only attached for codecs that carry CICP signalling (AVC, HEVC,
    VVC, AV1), fixing wrong colors of JPEG 2000 images; big-endian hosts are
    supported
  * gdk-pixbuf: GError is set when stop_load() fails
  * Box_udes: fixed the dump output of the 'tags' field
  * CMake: HAVE_BROTLI and HAVE_LIBSHARPYUV are no longer propagated in the
    public interface; fixed the Brotli configuration

Behavior changes

  * heif_context_write() / heif_context_write_to_file() refuse a context that
    was read from a file (Unsupported_feature). Item and sample data were never
    copied from the input, so the written file was truncated. Writing a context
    that contains only metadata items (no image, no sequence) returns a usage
    error instead of writing an invalid ftyp box
  * YCbCr to RGB conversions where the chroma planes have a different bit depth
    than luma return heif_suberror_Unsupported_color_conversion
  * Alpha compositing (flattening) rejects images with more than 16 bits per
    sample; HDR up-conversion to more than 16 bits is rejected
  * The x265 encoder returns an error for images with more than 142,606,336
    luma samples (the HEVC Level 7.2 maximum, e.g. 16384x8704) instead of
    crashing inside x265 (GHSA-2c3g-p585-8rpq)

Other

  * New heif_item_type_* and heif_entity_group_* fourcc constants, and
    documentation of the entity group types, in the API headers (#1864)
  * The uncompressed codec is no longer labeled experimental in heif-enc and
    the CMake options (#1869)
  * CI: Linux jobs moved to Ubuntu 24.04, GCC 16 added to the compiler matrix,
    clang-tidy performance checks enabled, all GitHub Actions pinned to commit
    SHAs, Coverity scan re-enabled


To generate a diff of this commit:
cvs rdiff -u -r1.58 -r1.59 pkgsrc/graphics/libheif/Makefile
cvs rdiff -u -r1.50 -r1.51 pkgsrc/graphics/libheif/distinfo

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: pkgsrc/graphics/libheif/Makefile
diff -u pkgsrc/graphics/libheif/Makefile:1.58 pkgsrc/graphics/libheif/Makefile:1.59
--- pkgsrc/graphics/libheif/Makefile:1.58       Sun Aug 30 15:07:40 2026
+++ pkgsrc/graphics/libheif/Makefile    Wed Sep  2 14:50:24 2026
@@ -1,6 +1,6 @@
-# $NetBSD: Makefile,v 1.58 2026/08/30 15:07:40 wiz Exp $
+# $NetBSD: Makefile,v 1.59 2026/09/02 14:50:24 ryoon Exp $
 
-DISTNAME=      libheif-1.23.2
+DISTNAME=      libheif-1.23.3
 CATEGORIES=    graphics
 MASTER_SITES=  ${MASTER_SITE_GITHUB:=strukturag/}
 GITHUB_RELEASE=        v${PKGVERSION_NOREV}

Index: pkgsrc/graphics/libheif/distinfo
diff -u pkgsrc/graphics/libheif/distinfo:1.50 pkgsrc/graphics/libheif/distinfo:1.51
--- pkgsrc/graphics/libheif/distinfo:1.50       Sun Aug 30 15:07:40 2026
+++ pkgsrc/graphics/libheif/distinfo    Wed Sep  2 14:50:24 2026
@@ -1,6 +1,6 @@
-$NetBSD: distinfo,v 1.50 2026/08/30 15:07:40 wiz Exp $
+$NetBSD: distinfo,v 1.51 2026/09/02 14:50:24 ryoon Exp $
 
-BLAKE2s (libheif-1.23.2.tar.gz) = 4b1194dc28d06a3daa5247137ce2b619ccf2d46c3d4aa0eb62c9aca269d0331a
-SHA512 (libheif-1.23.2.tar.gz) = c40fb665e9e0e1b0ea1c618dc189f88afdb0738992ff3601fefd0a94d3c3ba089867f6b2cb141278462dd1c7e139f6af280356a9130281122e1f764096e170cb
-Size (libheif-1.23.2.tar.gz) = 2111195 bytes
+BLAKE2s (libheif-1.23.3.tar.gz) = df976a9fb0be9e936941432ff8f349c044e12ca5a92e2d7c687113058888cbcb
+SHA512 (libheif-1.23.3.tar.gz) = 035b194bba5d55bc860e95956d38eb8392bf8714f799a7918f46f504d7c61b2ed616ad06a7e8b8da577afd3abc006e9201e96ae967f2eb07b163165ddb53d8e7
+Size (libheif-1.23.3.tar.gz) = 2178756 bytes
 SHA1 (patch-heifio_CMakeLists.txt) = dda4522707589342898c29bba189557895d75178



Home | Main Index | Thread Index | Old Index