diff --git a/.agents/skills/release-notes-update/SKILL.md b/.agents/skills/release-notes-update/SKILL.md index 7c79fb6f88..435e53e2c3 100644 --- a/.agents/skills/release-notes-update/SKILL.md +++ b/.agents/skills/release-notes-update/SKILL.md @@ -237,6 +237,11 @@ message makes it clear that a new ImageBufAlgo API call was added, and also a new oiiotool command line argument was added, and that couldn't all be described in the one-line brief message of the commit. +Also cross-reference against SECURITY.md -- the PRs that have assigned +CVEs should reference that CE in the CHANGES.md entry corresponding to +that PR. + + ## Reference Full release procedures: `docs/dev/RELEASING.md` diff --git a/CHANGES.md b/CHANGES.md index 27d1ab1c65..55edac4378 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -8,18 +8,18 @@ Release 3.2 (target: Sept 2026?) -- compared to 3.1 ### โ›ฐ๏ธ New features and public API changes: * *New image file format support:* * *oiiotool new features and major improvements*: - - `oiiotool --flipdiff` computes the FLIP perceptual difference between two - images, prints statistics, and leaves the error map on the image stack for - further processing or saving. Options: `hdr=1` for HDR-FLIP, `colormap=NAME` - to apply a false-color map (e.g. "magma"), `ppd=N` to override pixels-per- - degree, `tonemapper=NAME` for HDR tonemapper ("aces", "reinhard", "hable"). - [#5154](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5154) [#5171](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5171) (3.2.0.1, 3.1.13.0) - - *oiiotool*: New `--experimental` flag enables opt-in trial features not yet part of the stable API, signaling that such behaviors may change between releases. [#5147](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5147) (3.2.0.1, 3.1.13.0) - - *oiiotool*: New `--nchannels` flag to specify the number of output channels, for parity with maketx. [#5198](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5198) (by Danny Greenstein) (3.2.0.3, 3.1.14.0) - - *oiiotool*: Commands taking offsets or geometry arguments now accept commas as alternative separators (e.g., `X,Y` or `WxH,X,Y` in addition to the X11-style `+X+Y` form). This affects `--create`, `--crop`, `--cut`, `--fit`, `--fullsize`, `--origin`, `--originoffset`, `--paste`, `--pattern`, `--printstats`, `--resize`. [#5209](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5209) (3.2.0.3, 3.1.14.0) - - *oiiotool*: Be more cautious about implicit promotion to float when `--autocc` is used alongside explicit color space names. [#5192](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5192) (3.2.0.3, 3.1.14.0) + - `--flipdiff` computes the FLIP perceptual difference between two images, + prints statistics, and leaves the error map on the image stack for further + processing or saving. Options: `hdr=1` for HDR-FLIP, `colormap=NAME` to + apply a false-color map (e.g. "magma"), `ppd=N` to override pixels-per- + degree, `tonemapper=NAME` for HDR tonemapper ("aces", "reinhard", + "hable"). [#5154](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5154) [#5171](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5171) (3.2.0.1, 3.1.13.0) + - `--experimental` enables opt-in trial features not yet part of the stable API, signaling that such behaviors may change between releases. [#5147](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5147) (3.2.0.1, 3.1.13.0) + - `--nchannels` specifies the number of output channels, for parity with maketx. [#5198](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5198) (by @grdanny / Danny Greenstein) (3.2.0.3, 3.1.14.0) + - oiiotool commands taking offsets or geometry arguments now accept commas as alternative separators (e.g., `X,Y` or `WxH,X,Y` in addition to the X11-style `+X+Y` form). This affects `--create`, `--crop`, `--cut`, `--fit`, `--fullsize`, `--origin`, `--originoffset`, `--paste`, `--pattern`, `--printstats`, `--resize`. [#5209](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5209) (3.2.0.3, 3.1.14.0) + - `--thumbnail-get` (and `-i:get_thumbnail=1`) and `--thumbnail-set` commands to extract and attach embedded thumbnails. Thumbnail support remains uneven across formats: reading is implemented for PSD, camera RAW, and TGA, but writing only for TGA. Fixed TGA postage-stamp read/write bugs uncovered along the way (wrong byte order/orientation, missing alpha association). [#5236](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5236) (by @jinhgkim / Jinnie Kim) (3.2.0.4, 3.1.16.0) * *Command line utilities*: - - *iv*: Flip, rotate and save image [#5003](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5003) (by Valery Angelique) (3.2.0.0, 3.1.11.0) + - *iv*: Flip, rotate and save image [#5003](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5003) (by @vangeliq / Valery Angelique) (3.2.0.0, 3.1.11.0) - *iconvert*: Allow `-o outfile` for output file designation, for parity with oiiotool syntax. [#5173](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5173) (3.2.0.3, 3.1.14.0) * *ImageBuf/ImageBufAlgo*: - `ImageBufAlgo::FLIP()` computes the FLIP (eLearning perceptual Image @@ -30,9 +30,10 @@ Release 3.2 (target: Sept 2026?) -- compared to 3.1 `FLIP_ppd()` helper computes pixels-per-degree for a given display setup. Python bindings and `oiiotool --flipdiff` are also provided. [#5154](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5154) [#5171](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5171) (3.2.0.1, 3.1.13.0) - - *ImageBuf*: `IB::localpixels_as_[writable_]byte_image_span` [#5011](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5011) (3.2.0.0, 3.1.10.0) + - `ImageBufAlgo::make_texture()` now honors "maketx:threads" hint [#5014](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5014) (3.2.0.0, 3.1.10.0) + - `ImageBuf::localpixels_as_[writable_]byte_image_span` [#5011](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5011) (3.2.0.0, 3.1.10.0) * *ImageCache/TextureSystem*: - - *api/TS*: `IBA::make_texture()` now honors "maketx:threads" hint [#5014](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5014) (3.2.0.0, 3.1.10.0) + - *texture*: Experimental GPU texture system prototype, implemented as a standalone testsuite executable that doesn't modify the core library. It validates a proposed host/device architecture end to end -- request-driven texture lookup, residency updates, retry flow, filtering, and output generation -- to inform eventual promotion of pieces into library code. See `README.md`/`SPEC.md` in the testsuite entry for design details. [#5228](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5228) (by @aconty / Alejandro Conty) (3.2.0.4, 3.1.16.0) * New global attribute queries via OIIO::getattribute(): - `limits:resolution` (default: 1048576) is a new settable/queryable global attribute that caps the maximum number of pixels along any single image @@ -40,155 +41,174 @@ Release 3.2 (target: Sept 2026?) -- compared to 3.1 complements `limits:imagesize_MB` to catch corrupt headers that are tiny in one dimension but absurdly large in another, which can defeat the total-pixel-memory check. + [#5297](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5297) (3.2.0.4, 3.1.16.0) * Miscellaneous API changes: - *api*: Versioned namespace to preserve ABI compatibility between minor releases [#4869](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4869) (3.2.0.0) - - *fmath.h*: `degrees()` and `radians()` are now `constexpr`. [#5151](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5151) (3.2.0.1, 3.1.13.0) - *ColorConfig*: New `isData()` API method to query if a color space is a data space; fix Python `isColorSpaceLinear()`. [#5191](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5191) (3.2.0.3, 3.1.14.0) - - *api*: `ImageSpec::size_t_safe()` and `ImageSpec::valid_tile_range()` are now annotated `OIIO_NODISCARD` to warn callers not to ignore their return values. [#5218](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5218) (by Hunter) (3.2.0.3) + - *api*: `ImageSpec::size_t_safe()` and `ImageSpec::valid_tile_range()` are now annotated `OIIO_NODISCARD` to warn callers not to ignore their return values. [#5218](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5218) (by @zoomhunter2010 / Hunter) (3.2.0.3) - *deepdata*: Widen `merge_deep_pixels()`'s srcpixel parameter to `int64_t`, change its return type, and add `OIIO_NODISCARD_ERROR`. [#5252](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5252) [#5253](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5253) (by @luna-y-kim / Luna Kim) (3.2.0.3, 3.1.15.0) - *python*: Unify the pybind11 and nanobind Python bindings so both backends compile from a single shared source tree (`src/python/`) instead of maintaining a separate nanobind-only copy, reducing duplicated binding code and the risk of behavior drift between backends. `ROI`, `TypeDesc`, `ImageSpec`, `ParamValue`/`ParamValueList`, and the core module helpers are migrated so far; the rest of the API (`ImageBuf`, `ImageInput`/`ImageOutput`, `ImageBufAlgo`, texture system, etc.) remains pybind11-only for now. [#5254](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5254) (by @soswow / Aleksandr Motsjonov) (3.2.0.3) + - *python*: Continue the pybind11/nanobind unification: bring the remaining Python modules onto the shared dual-backend source tree, simplify buffer/array helpers (buffer requests, `make_numpy_array` shapes, module attributes), and add `OIIO_PY_PROP_RW_NONE` for None-assignable properties. Adds regression coverage for 0-d `ImageBuf` buffers and `get_bytes_attribute` default conversion; `MIGRATION_STATUS` now reflects full dual-backend coverage. [#5310](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5310) (by @soswow / Aleksandr Motsjonov) (3.2.0.4) * Color management improvements: - Fix some legacy 'Linear' color references [#4959](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4959) (3.2.0.0) - - Auto convert between oiio:ColorSpace and CICP attributes in I/O [#4964](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4964) (by Brecht Van Lommel) (3.0.14.0, 3.2.0.0) - - *openexr*: Write OpenEXR colorInteropID metadata based on oiio:ColorSpace [#4967](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4967) (by Brecht Van Lommel) (3.0.14.0, 3.2.0.0) - - *jpeg-xl*: CICP read and write support for JPEG-XL [#4968](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4968) (by Brecht Van Lommel) (3.2.0.0, 3.1.9.0) - - *jpeg-xl*: ICC read and write for JPEG-XL files (issue 4649) [#4905](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4905) (by shanesmith-dwa) (3.0.14.0, 3.2.0.0) + - Auto convert between oiio:ColorSpace and CICP attributes in I/O [#4964](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4964) (by @brechtvl / Brecht Van Lommel) (3.0.14.0, 3.2.0.0) + - *openexr*: Write OpenEXR colorInteropID metadata based on oiio:ColorSpace [#4967](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4967) (by @brechtvl / Brecht Van Lommel) (3.0.14.0, 3.2.0.0) + - *jpeg-xl*: CICP read and write support for JPEG-XL [#4968](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4968) (by @brechtvl / Brecht Van Lommel) (3.2.0.0, 3.1.9.0) + - *jpeg-xl*: ICC read and write for JPEG-XL files (issue 4649) [#4905](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4905) (by @shanesmith-dwa / Shane Smith) (3.0.14.0, 3.2.0.0) - *color mgmt*: For OCIO built-in configs, replace the default file rules with more sensible ones that avoid spurious matches (e.g., no longer assumes all `.exr` files use ACES2065-1 primaries). [#5194](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5194) (3.2.0.3, 3.1.14.0) * Other notable new feature: - *tiff*: Support for GPS metadata fields (latitude, longitude, altitude, timestamp, and related EXIF GPS fields) when using libTIFF 4.2+. [#5050](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5050) (3.2.0.1, 3.1.12.0) - - *heif*: Add IOProxy support for both input and output [#5017](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5017) (by Brecht Van Lommel) (3.2.0.0, 3.1.10.0) + - *heif*: Add IOProxy support for both input and output [#5017](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5017) (by @brechtvl / Brecht Van Lommel) (3.2.0.0, 3.1.10.0) + - *jpeg*: Add thumbnail read support (`get_thumbnail()`) to the JPEG reader. [#5333](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5333) (by @antond-weta / Anton Dukhovnikov) (3.2.0.4) + - *raw*: Fixes and improvements to thumbnail functionality in the raw reader, including new `raw:thumbnail_index` and `raw:thumbnail_sort` hints to select a specific thumbnail when a file has more than one. [#5334](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5334) (by @antond-weta / Anton Dukhovnikov) (3.2.0.4) + - *testing*: New libFuzzer-based fuzzing infrastructure for image format readers: a single dynamic-dispatch harness (`oiio_fuzz_image`) discovers formats at runtime, so new format plugins get fuzz coverage automatically with no harness to write. A nightly 29-format CI matrix runs, tiered by risk, with per-format corpus caching. The shared bounded/chunked read-and-verify loop also backs a new `oiiotool --testread` debug flag, useful on its own for checking whether a file can be fully read without needing pixels stored. See `docs/dev/fuzzing.md` for the local build/run/reproduce/minimize workflow. [#5314](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5314) (3.2.0.4, 3.1.16.0) ### ๐Ÿš€ Performance improvements - *perf*: `ImageBufAlgo::resample` and `oiiotool --resample` improvements to speed up 20x or more [#4993](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4993) (3.2.0.0, 3.1.10.0) - *perf*: Reduce redundant file re-opening attempts when a file fails to open. [#5267](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5267) (3.2.0.3) ### ๐Ÿ› Fixes and feature enhancements - - *texture*: Fix texture overblur with st-blur parameters [#5071](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5071) [#5080](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5080) (by Pascal Lecocq) (3.2.0.1, 3.1.12.0, 3.0.17.0) + - *deepdata*: Correct the Zback channel in `sort()`; change int pixel to `int64_t`. [#5241](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5241) (by @luna-y-kim / Luna Kim) (3.2.0.3, 3.1.15.0) + - *exif*: Support EXIF 3.0 tags (for all formats) [#4961](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4961) (3.2.0.1) + - *exif*: Beef up Exif error detection: check that the blob is at least as large as a `TIFFHeader` before parsing it, and honor the `imageinput:strict` attribute (previously ignored in several places) so a corrupt Exif blob is a hard error in strict mode for the JPEG, PNG, WebP, and Heif readers, not just silently skipped. [#5322](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5322) (3.2.0.4, 3.1.16.0) + - *IBA*: IBA::compare_Yee() accessed the wrong channel [#4976](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4976) (by @pmady / Pavan Madduri) (3.2.0.0) + - *IBA*: Handle offset data windows in fillholes_pushpull [#5105](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5105) (3.2.0.1, 3.1.12.0, 3.0.17.0) + - *iinfo*: Better error handling and propagation, especially from `--hash`; fix return code when a file could not be read [#5168](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5168) (3.2.0.1, 3.1.13.0) + - *ImageBuf*: Fix set_pixels bug, didn't consider roi = All [#4949](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4949) (3.2.0.1) + - *ImageBuf*: Copy ctor of an ImageCache-backed ImageBuf zeroed the bufspan strides. [#5244](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5244) (3.2.0.3, 3.1.15.0) + - *imagebuf*: Fix a data race that could corrupt multithreaded reads: `m_pixels_valid` (and `m_spec_valid`) were set true as soon as the buffer/spec were allocated, before being fully populated, so a lock-free reader on another thread could observe the flag true and read stale or empty data. The flags (and `m_pixels_read`) are now set only once their data is fully populated, and made atomic so lock-free readers get a proper memory barrier. [#5325](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5325) (3.2.0.4, 3.1.16.0) - *ImageInput*: check_open fixes and new checks [#5087](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5087) (3.2.0.1, 3.1.12.0, 3.0.17.0) + - *imageinput/imageoutput*: Fix a per-instance error-message leak: the thread-local error map's destructor-time erase had been disabled out of caution about static destruction order, so every `ImageInput`/`ImageOutput` destroyed without its error being retrieved via `geterror()` leaked a map entry -- found via a fuzzer that opened hundreds of thousands of corrupt files and grew the map unbounded. Re-enable the erase, now guarded against the destruction-order hazard. [#5276](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5276) (3.2.0.4) + - *imageio*: `valid_file()` now checks the file header for magic words for more reliable format detection. [#5266](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5266) (3.2.0.3) + - *imageio*: Ignore invalid RowsPerStrip chunking. [#5300](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5300) (by @br0nzu / Dongju Lee) (3.2.0.3) - *ImageSpec*: metadata_val improved safety [#5096](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5096) (3.2.0.1, 3.1.12.0, 3.0.17.0) - - *ImageBuf*: Fix set_pixels bug, didn't consider roi = All [#4949](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4949) (3.2.0.1) - - *IBA*: IBA::compare_Yee() accessed the wrong channel [#4976](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4976) (by Pavan Madduri) (3.2.0.0) - - *IBA*: Handle offset data windows in fillholes_pushpull [#5105](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5105) (3.2.0.1, 3.1.12.0, 3.0.17.0) - - *fix*: Gamma precision improvements [#5038](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5038) (by Lumina Wang) (3.2.0.0, 3.1.11.0) + - *ImageSpec*: `get_string_attribute()` now correctly converts non-string attributes to string (previously it only found attributes already stored as strings) [#5161](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5161) (3.2.0.1, 3.1.13.0, 3.0.18.0) - *oiiotool*: `--buildinfo` misreported platform on MSVS [#5027](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5027) (3.2.0.0, 3.1.11.0) - *oiiotool*: Fix expression BOTTOM when there are exactly two images [#5046](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5046) (3.2.0.0, 3.1.11.0) - *oiiotool*: `-d SUBIMAGENAME.*` didn't work properly [#5048](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5048) (3.2.0.0, 3.1.11.0) - *oiiotool*: Make sure `oiiotool --compression` does expression substitution [#5055](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5055) (3.2.0.0, 3.1.11.0) - *oiiotool*: Better type understanding with `-i:ch=` and other related cleanup [#5056](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5056) (3.2.0.1, 3.1.12.0) + - *oiiotool*: Be more cautious about implicit promotion to float when `--autocc` is used alongside explicit color space names. [#5192](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5192) (3.2.0.3, 3.1.14.0) + - *texture*: Fix texture overblur with st-blur parameters [#5071](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5071) [#5080](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5080) (by @lecocqp / Pascal Lecocq) (3.2.0.1, 3.1.12.0, 3.0.17.0) + - *xmp*: Correctly parse XMP with self-closing `` elements (previously only `` end tags were recognized) [#5106](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5106) (3.2.0.1, 3.1.13.0, 3.0.18.0) - *bmp*: Detect corrupt files where palette doesn't match bpp [#5030](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5030) (3.2.0.0, 3.1.11.0) - *bmp*: Use check_open to guard against corrupt resolutions [#5086](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5086) (3.2.0.1, 3.1.12.0, 3.0.17.0) - - *exif*: Support EXIF 3.0 tags (for all formats) [#4961](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4961) (3.2.0.1) - - *ffmpeg*: 10 bit video had wrong green channel [#4935](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4935) (by Brecht Van Lommel) (3.2.0.0, 3.1.7.0) - - *gif*: Preserve RGB values of transparent-indexed pixels (previously only alpha was set, zeroing the RGB channels). [#5188](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5188) (by Lumina Wang) (3.2.0.3, 3.1.14.0) - - *heif*: Add IOProxy support for both input and output [#5017](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5017) (by Brecht Van Lommel) (3.2.0.0, 3.1.10.0) - - *heif*: Fix: Could not output AVIF when libheif has no HEVC support [#5013](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5013) (by Brecht Van Lommel) (3.2.0.0, 3.1.10.0) - - *heif*: Fix error saving multiple images with different bit depths [#5018](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5018) (by Brecht Van Lommel) (3.2.0.0, 3.1.10.0) - - *heif*: Monochrome channel read and write support, fix crash [#5043](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5043) (by Brecht Van Lommel) (3.2.0.0, 3.1.11.0) - - *heif*: Fix invalid read writing 8-bit images with dimensions not a multiple of 64 [#5095](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5095) (by Brecht Van Lommel) (3.2.0.1, 3.1.12.0) - - *ico*: Various validity checks and error handling for corruptions [#5088](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5088) (3.2.0.1, 3.1.12.0, 3.0.17.0) - - *iff*: Handle non-zero origin, protect against buffer overflows [#4925](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4925) (3.2.0.0, 3.1.7.0) - - *jpeg*: Fix wrong pointers/crashing when decoding CMYK jpeg files [#4963](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4963) (3.2.0.0) - - *jpeg*: Improved safety and error reporting for jpeg and iptc [#5081](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5081) (3.2.0.1, 3.1.12.0) - - *jpeg*: More correctly handle bounds checks for malformed APP1 Exif and APP2 ICC metadata markers. [#5174](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5174) (by Vlad Erium) (3.2.0.3, 3.1.14.0) - - *jpeg-2000*: Type warning in assertion in jpeg2000output.cpp [#4952](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4952) (3.2.0.1) - - *jpeg-xl*: ICC read and write for JPEG-XL files (issue 4649) [#4905](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4905) (by shanesmith-dwa) (3.2.0.0) - - *jpeg-xl*: Correctly set Quality for JPEG XL [#4933](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4933) (3.2.0.0, 3.1.7.0) - - *jpeg-xl*: CICP read and write support for JPEG XL [#4968](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4968) (by Brecht Van Lommel) (3.2.0.0, 3.1.9.0) - - *jpeg-xl*: Extend JXL CICP support to include P3 / color primaries 12 [#5054](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5054) (by Shane Smith) (3.2.0.0, 3.1.11.0) - - *jpeg-xl*: Enforce format resolution limits for better detection of corrupt or invalid files. [#5202](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5202) (by Hannah Gulka) (3.2.0.3, 3.1.14.0) - - *jpeg-xl*: Prevent reader from loading or allocating memory for arbitrarily large non-image files. [#5203](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5203) (by Maxwell Iverson) (3.2.0.3, 3.1.14.0, 3.0.19.0) - - *openexr*: Support for idManifest and deepImageState (experimental) [#4877](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4877) (3.2.0.0, 3.1.7.0) - - *openexr*: ACES Container hint for exr outputs [#4907](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4907) (by Oktay Comu) (3.2.0.0, 3.1.7.0) - - *openexr*: Write OpenEXR colorInteropID metadata based on oiio:ColorSpace [#4967](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4967) (by Brecht Van Lommel) (3.0.14.0, 3.2.0.0) - - *openexr*: Improve attribute translation rules [#4946](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4946) (3.2.0.0) - - *openexr*: ACES container writes colorInteropId instead of colorInteropID [#4966](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4966) (by Brecht Van Lommel) (3.2.0.0) - - *png*: We were not correctly suppressing hint metadata [#4983](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4983) (3.2.0.0) - - *pnm*: Prevent reader from loading or allocating memory for arbitrarily large non-image files. [#5203](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5203) (by Maxwell Iverson) (3.2.0.3, 3.1.14.0, 3.0.19.0) - - *psd*: Fixes against corrupt files with better validation [#5089](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5089) (3.2.0.1, 3.1.12.0, 3.0.17.0) - - *psd*: Fix indexed transparency. [#5177](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5177) (by Vlad Erium) (3.2.0.3, 3.1.14.0) - - *rla*: Lots of additional validity checking and safety [#5094](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5094) (3.2.0.1, 3.1.12.0, 3.0.17.0) - - *sgi*: Implement RLE encoding support for output [#4990](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4990) (by Jesse Yurkovich) (3.2.0.0) - - *tiff*: Fix TIFF output crash for multi-count Exif metadata [#5035](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5035) (3.2.0.0, 3.1.11.0) - - *tiff*: Improve TIFF robustness for non-matching tag/metadata types [#5036](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5036) (3.2.0.0, 3.1.11.0) - - *tiff*: Correctly read TIFF EXIF fields for ExifVersion and FlashPixVersion [#5045](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5045) (3.2.0.0, 3.1.11.0) - - *tiff*: Fix buffer overrun and improve error reporting [#5082](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5082), fix wrong number of values passed to `invert_photometric` [#5083](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5083), check for invalid bit depth in palette images [#5091](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5091) (3.2.0.1, 3.1.12.0) - - *webp*: Allow out-of-order scanlines when writing webp [#4973](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4973) (by Pavan Madduri) (3.2.0.0) - - *webp*: Use correct resolution limits for WebpOutput::open [#5016](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5016) (by Jesse Yurkovich) (3.2.0.0, 3.1.10.0) - - *webp*: Fix missing oiio:UnassociatedAlpha on input [#5020](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5020) (by Brecht Van Lommel) (3.2.0.0, 3.1.10.0) - - *webp*: Fix bounds handling for WebP EXIF metadata chunks. [#5175](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5175) (by Vlad Erium) (3.2.0.3, 3.1.14.0) - - *webp*: Enforce format resolution limits for better detection of corrupt or invalid files. [#5202](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5202) (by Hannah Gulka) (3.2.0.3, 3.1.14.0) - - *fix*: Fix UB-sanitizer warning about alignment [#5097](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5097) (3.2.0.1, 3.1.12.0) - - *fix*: Catch exceptions in print-uncaught-messages destructor [#5103](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5103) (3.2.0.1, 3.1.12.0) - - *fix*: Enhanced exception safety for our use of OpenColorIO [#5114](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5114) (3.2.0.1, 3.1.12.0) - - *fix*: Fix possible fmt exceptions where we might have passed null string [#5115](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5115) (3.2.0.1, 3.1.12.0) - *bmp*: Correctly handle the combination of greyscale + RLE compression [#5163](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5163) (3.2.0.1, 3.1.13.0, 3.0.18.0) - - *dds*: Corruption protection: validate resolution and guard against integer overflow [#5131](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5131) (3.2.0.1, 3.1.13.0, 3.0.18.0) - - *dicom*: Enforce reasonable resolution limits to guard against corrupt files. [#5167](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5167) (3.2.0.3, 3.1.14.0, 3.0.19.0) - - *heif*: Fix incorrect tracking of current subimage (the `current_subimage()` method was never properly overridden, always returning 0) [#5166](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5166) (3.2.0.1, 3.1.13.0, 3.0.18.0) - - *iinfo*: Better error handling and propagation, especially from `--hash`; fix return code when a file could not be read [#5168](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5168) (3.2.0.1, 3.1.13.0) - - *ImageSpec*: `get_string_attribute()` now correctly converts non-string attributes to string (previously it only found attributes already stored as strings) [#5161](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5161) (3.2.0.1, 3.1.13.0, 3.0.18.0) - - *jpeg*: Be more flexible with corrupt IPTC blocks; use `"imageinput:strict"` mode to control whether a bad IPTC block is skipped silently or fails the whole file [#5140](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5140) (3.2.0.1, 3.1.13.0) - - *jpeg2000*: Guard against integer overflow in buffer size computation [#5143](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5143) (3.2.0.1, 3.1.13.0, 3.0.18.0) - - *rla*: Harden against corrupted files: guard against RLE buffer overruns and improve seek robustness [#5153](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5153) [#5172](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5172) (3.2.0.1, 3.1.13.0, 3.0.18.0) - - *sgi*: Better detection of corrupt RLE info that could overflow [#5141](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5141) (3.2.0.1, 3.1.13.0, 3.0.18.0) - - *softimage*: Multiple hardening fixes against corrupted input: prevent RLE buffer overruns [#5142](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5142), general hardening [#5155](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5155), fix malformed channel packets [#5156](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5156) (3.2.0.1, 3.1.13.0, 3.0.18.0) - - *softimage*: Fix possible small allocation leak in RLE decoder. [#5182](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5182) (3.2.0.3, 3.1.14.0) - - *targa*: Protection against corrupt, mis-sized palette; fix misunderstanding of non-zero palette start index [#5165](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5165) (3.2.0.1, 3.1.13.0, 3.0.18.0) - - *tiff*: Care with missing rowsperstrip (assume whole image is one strip per spec) [#5160](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5160); guard against corrupt XMP blocks with TIFF-related tag names [#5162](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5162) (3.2.0.1, 3.1.13.0, 3.0.18.0) - - *xmp*: Correctly parse XMP with self-closing `` elements (previously only `` end tags were recognized) [#5106](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5106) (3.2.0.1, 3.1.13.0, 3.0.18.0) - - *fix*: Relax OpenColorIO exception handling: distinguish serious errors (bad config, failed processor) from benign failures (unknown role/colorspace) [#5164](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5164) (3.2.0.1, 3.1.13.0) - - *ImageBuf*: Copy ctor of an ImageCache-backed ImageBuf zeroed the bufspan strides. [#5244](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5244) (3.2.0.3, 3.1.15.0) - - *imageio*: `valid_file()` now checks the file header for magic words for more reliable format detection. [#5266](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5266) (3.2.0.3) - - *imageio*: Ignore invalid RowsPerStrip chunking. [#5300](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5300) (by @br0nzu / Dongju Lee) (3.2.0.3) - *bmp*: Validate scanline file position before reading, to catch corrupt files. [#5274](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5274) (3.2.0.3) - *cineon*: More robust to invalid numbers of channels and bit depths; also fixes a channel-naming counter bug and a memory leak in `init()`. CVE-2026-59181 [#5250](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5250) (3.2.0.3, 3.1.15.0, 3.0.20.0) - *cineon*: Validate bit depth against libcineon's supported set. [#5283](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5283) (3.2.0.3) + - *dds*: Corruption protection: validate resolution and guard against integer overflow [#5131](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5131) (3.2.0.1, 3.1.13.0, 3.0.18.0) - *dds*: Reject corrupt bytes-per-pixel values before they force a huge allocation. [#5286](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5286) (3.2.0.3) - *dds*: Clamp pixel memcpy to `sizeof(uint32_t)` to prevent a stack overflow. [#5287](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5287) (3.2.0.3) - - *deepdata*: Correct the Zback channel in `sort()`; change int pixel to `int64_t`. [#5241](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5241) (by @luna-y-kim / Luna Kim) (3.2.0.3, 3.1.15.0) + - *dicom*: Enforce reasonable resolution limits to guard against corrupt files. [#5167](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5167) (3.2.0.3, 3.1.14.0, 3.0.19.0) - *dpx*: Detect corrupt userbuf size with an overflow guard. [#5271](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5271) (3.2.0.3) + - *dpx*: Fix a heap overflow in the 1-channel 10-bit filled scanline swap when less than a full group of 3 packed samples remained in bounds. [#5298](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5298) (3.2.0.4, 3.1.16.0) + - *ffmpeg*: 10 bit video had wrong green channel [#4935](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4935) (by @brechtvl / Brecht Van Lommel) (3.2.0.0, 3.1.7.0) - *ffmpeg*: Align swscale output buffers. [#5301](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5301) (by @br0nzu / Dongju Lee) (3.2.0.3) - - *filesystem*: Overflow-safe bounds check in `IOMemReader::pread`. [#5262](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5262) (3.2.0.3) - *fits*: Fix recursion stack overflow from too many header blocks on corrupt files; convert to an iterative loop with a safety limit. CVE-2026-59156 [#5248](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5248) (3.2.0.3, 3.1.15.0, 3.0.20.0) - - *fmath.h*: Fix typo in `convert_type` default argument, `min()` should have been `max()`. [#5227](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5227) (by @luna-y-kim / Luna Kim) (3.2.0.3, 3.1.15.0) + - *gif*: Preserve RGB values of transparent-indexed pixels (previously only alpha was set, zeroing the RGB channels). [#5188](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5188) (by @adskWangl / Lumina Wang) (3.2.0.3, 3.1.14.0) - *gif*: Handle empty error string from gif_lib. [#5269](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5269) (3.2.0.3) - *gif*: Address corrupt files with bad resolutions and integer overflow. [#5257](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5257) (3.2.0.3) - *gif*: Avoid int32 overflow in palette-split pixel-count math. [#5292](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5292) (3.2.0.3) - *gif*: Guard against canvas index overflow. [#5299](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5299) (by @br0nzu / Dongju Lee) (3.2.0.3) - *hdr*: Make the HDR reader tolerant to CR characters in the ASCII header. [#5261](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5261) (3.2.0.3, 3.1.15.0) - *hdr*: Validate resolution to detect corrupted files. [#5256](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5256) (3.2.0.3) + - *hdr*: Resolve a format-detection conflict between the HDR and RAW readers for `.hdr` files: the rare Hasselblad raw extension collides with Radiance HDR, and with `EMBEDPLUGINS=0` giving the raw reader first crack at `.hdr` files, older libraw versions would crash trying to open a Radiance file. Remove the rarely-used `.hdr` extension from the RAW reader's extension list; the HDR reader tries first and fails safely, then the raw reader still gets a chance via `try_all_readers`. [#5339](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5339) (3.2.0.4, 3.1.16.0) + - *heif*: Add IOProxy support for both input and output [#5017](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5017) (by @brechtvl / Brecht Van Lommel) (3.2.0.0, 3.1.10.0) + - *heif*: Fix: Could not output AVIF when libheif has no HEVC support [#5013](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5013) (by @brechtvl / Brecht Van Lommel) (3.2.0.0, 3.1.10.0) + - *heif*: Fix error saving multiple images with different bit depths [#5018](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5018) (by @brechtvl / Brecht Van Lommel) (3.2.0.0, 3.1.10.0) + - *heif*: Monochrome channel read and write support, fix crash [#5043](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5043) (by @brechtvl / Brecht Van Lommel) (3.2.0.0, 3.1.11.0) + - *heif*: Fix invalid read writing 8-bit images with dimensions not a multiple of 64 [#5095](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5095) (by @brechtvl / Brecht Van Lommel) (3.2.0.1, 3.1.12.0) + - *heif*: Fix incorrect tracking of current subimage (the `current_subimage()` method was never properly overridden, always returning 0) [#5166](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5166) (3.2.0.1, 3.1.13.0, 3.0.18.0) + - *ico*: Various validity checks and error handling for corruptions [#5088](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5088) (3.2.0.1, 3.1.12.0, 3.0.17.0) - *ico*: Better error checking for PNG-in-ICO files. [#5264](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5264) (3.2.0.3) - *ico,png*: Avoid leaking an error string across a `png_chunk_error` longjmp. [#5289](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5289) (3.2.0.3) + - *iff*: Handle non-zero origin, protect against buffer overflows [#4925](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4925) (3.2.0.0, 3.1.7.0) - *iff*: Fix allocation bug when reading 16 bit RGBA + float z (buffer size didn't account for the z channel). CVE-2026-59956 [#5251](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5251) (3.2.0.3, 3.1.15.0, 3.0.20.0) - *iff*: Detect corrupt chunk sizes, flags, and channel configurations. [#5268](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5268) (3.2.0.3) - *iff*: Add resolution validity checking. [#5285](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5285) (3.2.0.3) - *iff*: Reject implausible image dimensions before allocating the tile buffer. [#5284](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5284) (3.2.0.3) - - *jxl*: Guard against corrupt basic-info dimensions early. [#5305](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5305) (3.2.0.3) + - *jpeg*: Fix wrong pointers/crashing when decoding CMYK jpeg files [#4963](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4963) (3.2.0.0) + - *jpeg*: Improved safety and error reporting for jpeg and iptc [#5081](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5081) (3.2.0.1, 3.1.12.0) + - *jpeg*: More correctly handle bounds checks for malformed APP1 Exif and APP2 ICC metadata markers. [#5174](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5174) (by @ssh4net / Vlad Erium) (3.2.0.3, 3.1.14.0) + - *jpeg*: Be more flexible with corrupt IPTC blocks; use `"imageinput:strict"` mode to control whether a bad IPTC block is skipped silently or fails the whole file [#5140](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5140) (3.2.0.1, 3.1.13.0) + - *jpeg2000*: Type warning in assertion in jpeg2000output.cpp [#4952](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4952) (3.2.0.1) + - *jpeg2000*: Guard against integer overflow in buffer size computation [#5143](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5143) (3.2.0.1, 3.1.13.0, 3.0.18.0) + - *jpeg2000*: Reject corrupt component geometry and subsampling that could inflate the derived image size past the actual decoded component buffer (a heap-buffer-overflow in `copy_scanline` on a fuzzed file), and add pre-decode guards against oversized and decompression-bomb headers so a malicious file can't force a large allocation and lengthy decode before OIIO's own checks get a chance to reject it. [#5270](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5270) [#5327](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5327) (3.2.0.4, 3.1.16.0) + - *jpeg-xl*: ICC read and write for JPEG-XL files (issue 4649) [#4905](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4905) (by @shanesmith-dwa / Shane Smith) (3.2.0.0) + - *jpeg-xl*: Correctly set Quality for JPEG XL [#4933](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4933) (3.2.0.0, 3.1.7.0) + - *jpeg-xl*: CICP read and write support for JPEG XL [#4968](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4968) (by @brechtvl / Brecht Van Lommel) (3.2.0.0, 3.1.9.0) + - *jpeg-xl*: Extend JXL CICP support to include P3 / color primaries 12 [#5054](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5054) (by @shanesmith-dwa / Shane Smith) (3.2.0.0, 3.1.11.0) + - *jpeg-xl*: Enforce format resolution limits for better detection of corrupt or invalid files. [#5202](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5202) (by @hkgulka / Hannah Gulka) (3.2.0.3, 3.1.14.0) + - *jpeg-xl*: Prevent reader from loading or allocating memory for arbitrarily large non-image files. [#5203](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5203) (by @maxwelliverson / Maxwell Iverson) (3.2.0.3, 3.1.14.0, 3.0.19.0) + - *jpeg-xl*: Guard against corrupt basic-info dimensions early. [#5305](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5305) (3.2.0.3) + - *openexr*: Support for idManifest and deepImageState (experimental) [#4877](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4877) (3.2.0.0, 3.1.7.0) + - *openexr*: ACES Container hint for exr outputs [#4907](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4907) (by @Glowies / Oktay Comu) (3.2.0.0, 3.1.7.0) + - *openexr*: Write OpenEXR colorInteropID metadata based on oiio:ColorSpace [#4967](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4967) (by @brechtvl / Brecht Van Lommel) (3.0.14.0, 3.2.0.0) + - *openexr*: Improve attribute translation rules [#4946](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4946) (3.2.0.0) + - *openexr*: ACES container writes colorInteropId instead of colorInteropID [#4966](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4966) (by @brechtvl / Brecht Van Lommel) (3.2.0.0) - *openexr*: Add `check_open` to `exrinput_c`. [#5280](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5280) (3.2.0.3) + - *openexr*: Fix an out-of-bounds write when reading partial edge tiles of a tiled EXR whose dimensions aren't a multiple of the tile size: both the Core and classic readers padded the destination row stride up to a whole number of tiles instead of using the caller's actual rectangle width, overrunning the buffer on the last (partial) tile column. CVE-2026-63422 [#5295](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5295) (3.2.0.4, 3.1.16.0, 3.0.21.0) + - *png*: We were not correctly suppressing hint metadata [#4983](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4983) (3.2.0.0) + - *pnm*: Prevent reader from loading or allocating memory for arbitrarily large non-image files. [#5203](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5203) (by @maxwelliverson / Maxwell Iverson) (3.2.0.3, 3.1.14.0, 3.0.19.0) + - *psd*: Fixes against corrupt files with better validation [#5089](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5089) (3.2.0.1, 3.1.12.0, 3.0.17.0) + - *psd*: Fix indexed transparency. [#5177](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5177) (by @ssh4net / Vlad Erium) (3.2.0.3, 3.1.14.0) - *psd*: Validate `color_mode` before the RawColor early return. [#5282](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5282) (3.2.0.3) - *psd*: Detect implausibly large ICC, Exif, and XMP blocks before allocating. [#5288](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5288) (3.2.0.3) - *psd*: Identify corruptions of layer resolutions and EOF in strings. [#5259](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5259) (3.2.0.3) + - *psd*: Guard row interleave bounds on corrupt data, failing gracefully with an error instead of risking out-of-bounds access when interleaving scanlines from malformed files. CVE-2026-63420 [#5307](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5307) (3.2.0.4, 3.1.16.0, 3.0.21.0) + - *psd*: Avoid signed overflow computing layer/mask extents on files with large or negative layer offsets (UBSan-flagged on a fuzzed file). Retype the affected rect fields as `int32_t`, matching what they actually hold, and widen to `int64_t` before subtracting so the computation can't overflow. [#5306](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5306) (3.2.0.4, 3.1.16.0) + - *ptex*: More comprehensive `valid_file()` and header validation: previously there was no `PtexInput::valid_file()`, and `open()` handed off directly to the Ptex library with little validity checking, risking crashes or OOM on corrupted files. Ptex's fixed 64-byte header is now inspected up front to reject many forms of corruption before Ptex itself gets involved. [#5265](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5265) (3.2.0.4, 3.1.16.0) - *raw*: Apply the LibRaw memory cap before unpack to prevent OOM. [#5275](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5275) (3.2.0.3) + - *raw*: Reject decompression-bomb / corrupt headers before unpack: a pre-unpack guard rejects when the declared raw data size dwarfs the actual file size by more than 10000x, plus a `check_open()` call enforcing OIIO's standard resolution/imagesize limits and LibRaw's own per-dimension and per-channel caps. [#5312](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5312) (3.2.0.4, 3.1.16.0) + - *raw*: Pass a new `raw:bad_pixels` hint (a filename of bad-pixel data) through to LibRaw. [#5323](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5323) (by @antond-weta / Anton Dukhovnikov) (3.2.0.4, 3.1.16.0) + - *rla*: Lots of additional validity checking and safety [#5094](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5094) (3.2.0.1, 3.1.12.0, 3.0.17.0) + - *rla*: Harden against corrupted files: guard against RLE buffer overruns and improve seek robustness [#5153](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5153) [#5172](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5172) (3.2.0.1, 3.1.13.0, 3.0.18.0) + - *rla*: Better detection of corrupted RLE encoding: guard against a buffer overrun when the RLE count exceeds the number of encoded bytes remaining. [#5337](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5337) [#5258](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5258) (3.2.0.4, 3.1.16.0) + - *sgi*: Implement RLE encoding support for output [#4990](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4990) (by @jessey-git / Jesse Yurkovich) (3.2.0.0) + - *sgi*: Better detection of corrupt RLE info that could overflow [#5141](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5141) (3.2.0.1, 3.1.13.0, 3.0.18.0) - *sgi*: Size RLE offset tables by spec dimensions to prevent out-of-bounds access on corrupt headers. [#5279](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5279) (3.2.0.3) - *sgi*: Prevent an oversized-allocation crash from a bogus RLE length/offset table. [#5303](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5303) (3.2.0.3) + - *sgi*: Deal with corrupt 16-bit RLE runs that have odd byte counts. [#5321](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5321) (3.2.0.4, 3.1.16.0) + - *softimage*: Multiple hardening fixes against corrupted input: prevent RLE buffer overruns [#5142](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5142), general hardening [#5155](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5155), fix malformed channel packets [#5156](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5156) (3.2.0.1, 3.1.13.0, 3.0.18.0) + - *softimage*: Fix possible small allocation leak in RLE decoder. [#5182](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5182) (3.2.0.3, 3.1.14.0) + - *softimage*: Support channel packets with differing bit depths (e.g. 16-bit R mixed with 8-bit G in one file), which previously wrote past the end of the scanline buffer. The reader now always exposes one uniform pixel format -- the widest depth among the file's packets -- and promotes narrower channels to it on read via exact bit replication. [#5309](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5309) (3.2.0.4, 3.1.16.0) + - *targa*: Protection against corrupt, mis-sized palette; fix misunderstanding of non-zero palette start index [#5165](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5165) (3.2.0.1, 3.1.13.0, 3.0.18.0) - *targa*: Reject implausible image dimensions before allocating. [#5293](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5293) (3.2.0.3) + - *tiff*: Fix TIFF output crash for multi-count Exif metadata [#5035](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5035) (3.2.0.0, 3.1.11.0) + - *tiff*: Improve TIFF robustness for non-matching tag/metadata types [#5036](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5036) (3.2.0.0, 3.1.11.0) + - *tiff*: Correctly read TIFF EXIF fields for ExifVersion and FlashPixVersion [#5045](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5045) (3.2.0.0, 3.1.11.0) + - *tiff*: Fix buffer overrun and improve error reporting [#5082](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5082), fix wrong number of values passed to `invert_photometric` [#5083](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5083), check for invalid bit depth in palette images [#5091](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5091) (3.2.0.1, 3.1.12.0) + - *tiff*: Care with missing rowsperstrip (assume whole image is one strip per spec) [#5160](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5160); guard against corrupt XMP blocks with TIFF-related tag names [#5162](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5162) (3.2.0.1, 3.1.13.0, 3.0.18.0) - *tiff*: The "tiff:half" hint was only applying to the first MIP level. [#5240](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5240) (3.2.0.3, 3.1.15.0) - *tiff*: Avoid use-after-scope in multithreaded scanline reads. [#5294](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5294) (3.2.0.3) - *tiff*: Fix heap overflow when unpacking sub-8-bit contiguous CMYK samples. [#5296](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5296) (3.2.0.3) + - *tiff*: Fix some int32 overflows, and guard against decompression bombs. [#5319](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5319) (3.2.0.4, 3.1.16.0) + - *webp*: Allow out-of-order scanlines when writing webp [#4973](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4973) (by @pmady / Pavan Madduri) (3.2.0.0) + - *webp*: Use correct resolution limits for WebpOutput::open [#5016](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5016) (by @jessey-git / Jesse Yurkovich) (3.2.0.0, 3.1.10.0) + - *webp*: Fix missing oiio:UnassociatedAlpha on input [#5020](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5020) (by @brechtvl / Brecht Van Lommel) (3.2.0.0, 3.1.10.0) + - *webp*: Fix bounds handling for WebP EXIF metadata chunks. [#5175](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5175) (by @ssh4net / Vlad Erium) (3.2.0.3, 3.1.14.0) + - *webp*: Enforce format resolution limits for better detection of corrupt or invalid files. [#5202](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5202) (by @hkgulka / Hannah Gulka) (3.2.0.3, 3.1.14.0) ### ๐Ÿ”ง Internals and developer goodies - *fix*: Several bug fixes related to internal use of image_span [#5004](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5004) (3.2.0.0, 3.1.10.0) - *int*: Conform certain attrib names "exif:*" to our "Exif:*" convention [#5025](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5025) (3.2.0.0) - - *int*: Remove left over tile emulation code for various formats that really only support scanline I/O. This hasn't worked properly for a long time, so we aren't really taking away any functionality that anybody could have been using. [#5029](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5029) (by Jesse Yurkovich) (3.2.0.0) + - *int*: Remove left over tile emulation code for various formats that really only support scanline I/O. This hasn't worked properly for a long time, so we aren't really taking away any functionality that anybody could have been using. [#5029](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5029) (by @jessey-git / Jesse Yurkovich) (3.2.0.0) - *dassert.h*: OIIO_CONTRACT_ASSERT and other hardening improvements [#5006](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5006) (3.2.0.0) - - *filesystem.h*: Speedup to detect the existence of files on Windows [#4977](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4977) (by JacksonSun-adsk) (3.2.0.0) + - *filesystem.h*: Speedup to detect the existence of files on Windows [#4977](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4977) (by @wingfiring / JacksonSun-adsk) (3.2.0.0) + - *filesystem.h*: Overflow-safe bounds check in `IOMemReader::pread`. [#5262](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5262) (3.2.0.3) + - *filesystem.h*: Use 64-bit file offsets (`_fseeki64`/`_ftelli64`) on all Windows builds, including MinGW, which previously fell back to `fseeko`/`ftello` with 32-bit offsets. [#5354](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5354) (by @Maxi741cv / Mixie) (3.2.0.4) - *fmath.h*: Address fmath.h warning with ispow2 [#5033](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5033) (3.2.0.0) + - *fmath.h*: Fix typo in `convert_type` default argument, `min()` should have been `max()`. [#5227](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5227) (by @luna-y-kim / Luna Kim) (3.2.0.3, 3.1.15.0) + - *fmath.h*: `degrees()` and `radians()` are now `constexpr`. [#5151](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5151) (3.2.0.1, 3.1.13.0) - *typedesc.h*: New TypeURational type definition is like TypeRational, but with unsigned components. [#5036](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5036) [#5057](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5057) (3.2.0.0, 3.1.11.0) - *int*: `OIIO_NODISCARD_ERROR_ENABLE` is now always on when building OIIO itself, enforcing that all annotated return values are checked [#5145](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5145) (3.2.0.1, 3.1.13.0) - *ustring.h*: Allow freeing the ustring table via `OIIO::attribute("ustring:cleanup", 1)` or env var `OIIO_USTRING_CLEANUP=1`, useful for suppressing false positives in memory leak detection tools. [#5213](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5213) (3.2.0.3, 3.1.14.0) - - *filesystem.h*: Speedup various file system operations on Windows using native APIs. [#5199](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5199) (by Lumina Wang) (3.2.0.3, 3.1.14.0) + - *filesystem.h*: Speedup various file system operations on Windows using native APIs. [#5199](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5199) (by @adskWangl / Lumina Wang) (3.2.0.3, 3.1.14.0) - *int*: Additional contract-safety hardening: `OIIO_NODISCARD` on fmath.h integer and float helpers [#5221](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5221) (by @luna-y-kim / Luna Kim), extra contract asserts for `span` and `string_view` [#5224](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5224). (3.2.0.3) - *int*: Remove some old files that had no remaining use. [#5234](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5234) (3.2.0.3) + - *ImageBuf*: Remove redundant and dead code found while investigating an `IBA::reorient()` bug: a stray flag reset that immediately undid `m_badfile = true`, a redundant `validate_spec()` call in `orientation()` (already called by `spec()`), and an unreachable condition in `copy()`. [#5353](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5353) (by @luna-y-kim / Luna Kim) (3.2.0.4) + - *int*: Consolidate the decompression-bomb guard (previously TIFF-specific) into `ImageInput::check_compression_ratio()` so it can be reused uniformly by other format readers. [#5328](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5328) (3.2.0.4, 3.1.16.0) ### ๐Ÿ— Build/test/CI and platform ports * OIIO's CMake build system and scripts: @@ -202,38 +222,41 @@ Release 3.2 (target: Sept 2026?) -- compared to 3.1 - *build*: Use quote to avoid error if variable is empty [#5053](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5053) (3.2.0.0, 3.1.11.0) - *build*: Improve security by pinning auto-build dependencies by hash [#5076](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5076) (3.2.0.1, 3.1.12.0) - *build*: Include idiff in the python wheels we build [#5104](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5104) (3.2.0.1, 3.1.12.0, 3.0.17.0) - - *build*: Begin nanobind migration for Python bindings (pybind11 still works); new `OIIO_PYTHON_BINDINGS_BACKEND` CMake option controls whether to build `pybind11`, `nanobind`, or `both` [#5084](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5084) (by Aleksandr Motsjonov) (3.2.0.1) + - *build*: Begin nanobind migration for Python bindings (pybind11 still works); new `OIIO_PYTHON_BINDINGS_BACKEND` CMake option controls whether to build `pybind11`, `nanobind`, or `both` [#5084](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5084) (by @soswow / Aleksandr Motsjonov) (3.2.0.1) - *build*: Makefile wrapper fix to properly quote test regex [#5146](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5146) (3.2.0.1, 3.1.13.0, 3.0.18.0); minor debugging fixes to dependency_utils [#5128](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5128) (3.2.0.1, 3.1.13.0) - - *build*: Remove `-Wno-unused-result` from gcc compile options, surfacing more potential warnings. [#5214](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5214) (by Luna Kim) (3.2.0.3, 3.1.14.0) + - *build*: Remove `-Wno-unused-result` from gcc compile options, surfacing more potential warnings. [#5214](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5214) (by @luna-y-kim / Luna Kim) (3.2.0.3, 3.1.14.0) - *build*: Add support for gcc-16 [#5225](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5225) and C++26 [#5230](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5230), each tested in CI. (3.2.0.3, 3.1.15.0) - *build*: Option to use a compiled fmt library instead of the header-only variant. [#5231](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5231) (by @ssh4net / Vlad Erium) (3.2.0.3) - *build*: Suppress warnings from the fmt library when building on Mac. [#5237](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5237) (by @antond-weta / Anton Dukhovnikov) (3.2.0.3, 3.1.15.0, 3.0.20.0) - *build*: OpenJPH auto-build and better exception handling. [#5247](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5247) (3.2.0.3) - *build*: Fix certain clang varieties warning about giflib headers. [#5263](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5263) (3.2.0.3) - *build*: Support building for WebAssembly (wasm). [#5304](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5304) (by @nickdademo / Nick D'Ademo) (3.2.0.3) + - *build*: FORTIFY and sanitizer/debug builds are not compatible; don't allow enabling both together. [#5318](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5318) (3.2.0.4) + - *build*: Fix `EMBEDPLUGINS=0`, which had been broken for a long time without being caught because the CI variant meant to test it wasn't actually doing so (it tried to set it via environment variable, which didn't work until this patch). Also convert several build options from `option()` to our `set_option()`, allowing them to be overridden by environment variables of the same name, handy for CI variants. [#5272](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5272) (3.2.0.4, 3.1.16.0) * Dependency and platform support: - - *deps*: Additional auto-build capabilities for dependencies that are not found: GIF library [#4921](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4921) (by Valery Angelique), OpenJPEG [#4911](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4911) (by Danny Greenstein) (3.2.0.0, 3.1.7.0) - - *deps*: Disable LERC in libTIFF local build script [#4957](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4957) (by LI JI) (3.2.0.0, 3.1.8.0) + - *deps*: Additional auto-build capabilities for dependencies that are not found: GIF library [#4921](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4921) (by @vangeliq / Valery Angelique), OpenJPEG [#4911](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4911) (by @grdanny / Danny Greenstein) (3.2.0.0, 3.1.7.0) + - *deps*: Disable LERC in libTIFF local build script [#4957](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4957) (by @lji-ilm / LI JI) (3.2.0.0, 3.1.8.0) - *deps*: Test against libraw 0.21.5 [#4988](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4988) (3.2.0.0, 3.1.9.0) - - *build/platforms*: Fix building on OpenBSD [#5001](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5001) (by Brad Smith) (3.2.0.0, 3.1.10.0) - - *build/deps*: Bump OCIO auto-build ver to 2.5.1 [#5022](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5022) (by Zach Lewis) (3.2.0.0, 3.1.10.0) + - *build/platforms*: Fix building on OpenBSD [#5001](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5001) (by @brad0 / Brad Smith) (3.2.0.0, 3.1.10.0) + - *build/deps*: Bump OCIO auto-build ver to 2.5.1 [#5022](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5022) (by @zachlewis / Zach Lewis) (3.2.0.0, 3.1.10.0) - *build/deps*: Use libheif exported config if available [#5012](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5012) (3.2.0.0, 3.1.10.0) - *build/deps*: Libheif 1.21 support [#4992](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4992) (3.2.0.0, 3.1.10.0) - *deps*: Raise minimum fmt library version to 9.0 [#5041](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5041) (3.2.0.0) - *deps*: Test building with clang 22.1, fix warnings uncovered [#5067](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5067) (3.2.0.1, 3.1.12.0, 3.0.19.0) - *deps*: Address new pybind11 float/int auto-conversion behavior [#5058](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5058) (3.2.0.1, 3.1.12.0) - - *build/win*: Embed manifest in OIIO executables to enable long path handling [#5066](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5066) (by Nathan Rusch) (3.2.0.1, 3.1.12.0) - - *deps*: Update R3D SDK to version 9.2.0 [#5148](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5148) (by Peter Kovรกล™) (3.2.0.1, 3.1.13.0) + - *build/win*: Embed manifest in OIIO executables to enable long path handling [#5066](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5066) (by @nrusch / Nathan Rusch) (3.2.0.1, 3.1.12.0) + - *deps*: Update R3D SDK to version 9.2.0 [#5148](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5148) (by @1div0 / Peter Kovรกล™) (3.2.0.1, 3.1.13.0) - *deps*: Recommend libtiff 4.5+ for its security fixes. [#5277](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5277) (3.2.0.3) - *deps*: Auto-build pystring updated to v1.2.0. [#5235](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5235) (3.2.0.3, 3.1.14.1, 3.0.19.1) - *deps*: New PugiXML minimum version 1.11; rely on its CMake config now, and bump the auto-build vendored version. [#5246](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5246) (3.2.0.3) + - *opencv*: Support OpenCV 5 by locating it via its exported CMake config, and add a standalone header smoke test for the `imagebufalgo_opencv.h` interop, which previously had no test coverage at all. [#5326](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5326) (3.2.0.4, 3.1.16.0, 3.0.21.0) * Testing and Continuous integration (CI) systems: - *tests*: Image_span_test reduce benchmark load for debug and CI renders [#4951](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4951) (3.2.0.0, 3.1.8.0) - *tests*: Add new ref image for jpeg test [#5007](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5007) (3.2.0.0, 3.1.10.0) - *tests*: Adjust test comparision thresholds for Mac ARM [#5026](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5026) (3.2.0.0, 3.1.11.0) - *tests*: Add testsuite/heif ref output for libheif 1.21 + avif support [#5031](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5031) (3.2.0.0, 3.1.11.0) - *tests*: Imageinout_test: add benchmark of read and write speed vs tile size [#5037](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5037) (3.2.0.0, 3.1.11.0) - - *ci*: Python wheel building improvements: use ccache [#4924](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4924) (by Larry Gritz), unbreak wheel release + other enhancements pt 1 [#4937](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4937) (by Zach Lewis) (3.2.0.0, 3.1.7.0) + - *ci*: Python wheel building improvements: use ccache [#4924](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4924) (by @lgritz / Larry Gritz), unbreak wheel release + other enhancements pt 1 [#4937](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4937) (by @zachlewis / Zach Lewis) (3.2.0.0, 3.1.7.0) - *ci*: Simplify ci workflow by using build-steps for old aswf containers, too [#4932](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4932) (3.2.0.0, 3.1.7.0) - *ci*: We were not correctly setting fmt version from job options [#4939](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4939) (3.2.0.0, 3.1.7.0) - *ci*: Emergency fix change deprecated sonarqube action [#4969](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4969) (3.2.0.0) @@ -264,11 +287,13 @@ Release 3.2 (target: Sept 2026?) -- compared to 3.1 - *ci*: Add vfx2027 container tests. [#5302](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5302) (3.2.0.3) - *test*: Improve Python test coverage. [#5260](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5260) (by @soswow / Aleksandr Motsjonov) (3.2.0.3) - *test*: Update the `getattribute` one-arg test for the unified Python bindings (a default type argument added by [#5254](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5254) changed the one-arg call's behavior). [#5308](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5308) (3.2.0.3) + - *ci*: Test against and document the latest dependency versions. [#5330](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5330) (3.2.0.4, 3.1.16.0) + - *testing*: New libFuzzer-based fuzzing infrastructure and nightly CI matrix for image format readers -- see the "Other notable new feature" entry above for details. [#5314](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5314) (3.2.0.4, 3.1.16.0) ### ๐Ÿ“š Notable documentation changes - *docs*: Update/correct explanation of "openexr:core" attribute, and typo fixes [#4943](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4943) (3.2.0.0, 3.1.7.0) - *docs*: Remove outdated/wrong description in INSTALL.md [#5008](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5008) (3.2.0.0) - - *docs*: Update description for dwaCompressionLevel [#5074](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5074) (by Aamir Raza) (3.2.0.1, 3.1.12.0) + - *docs*: Update description for dwaCompressionLevel [#5074](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5074) (by @Aamir-Raza / Aamir Raza) (3.2.0.1, 3.1.12.0) - *docs*: Fix formatting examples for version macros [#5073](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5073) (3.2.0.1, 3.1.12.0) - *docs*: Keep TextureSystem docs in sync with ImageCache [#5085](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5085) (3.2.0.1, 3.1.12.0, 3.0.17.0) - *docs*: Fix typos and incorrect attribute name in a comment [#5093](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5093) (3.2.0.1, 3.1.12.0, 3.0.17.0) @@ -277,6 +302,9 @@ Release 3.2 (target: Sept 2026?) -- compared to 3.1 - *docs*: Clarify plugin.h explanations by noting their Unix-like equivalents. [#5226](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5226) (3.2.0.3, 3.1.15.0) - *docs*: Fix typos and update a reference link in deepdata comments. [#5238](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5238) (by @luna-y-kim / Luna Kim) (3.2.0.3, 3.1.15.0) - *docs*: Fix typo in bitcast docs. [#5255](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5255) (3.2.0.3, 3.1.15.0) + - *docs*: Fix typos. [#5349](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5349) (by @jinhgkim / Jinnie Kim) (3.2.0.4, 3.1.16.0) + - *docs*: Update the ImageCache docs now that IC is fully de-virtualized, remove leftover docs for the old ImageBufAlgo header API, and fix minor typos found along the way. [#5352](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5352) (by @luna-y-kim / Luna Kim) (3.2.0.4, 3.1.16.0) + - *docs*: Fix vcpkg install command syntax in INSTALL.md (`vcpkg install openimageio[tools]`, no space). [#5332](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5332) (by @BrianHanke / Brian R Hanke) (3.2.0.4, 3.1.16.0) ### ๐Ÿข Project Administration - *admin*: Refinements to the issue and PR templates [#4982](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4982) [#4995](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4995) (3.2.0.0) @@ -285,14 +313,69 @@ Release 3.2 (target: Sept 2026?) -- compared to 3.1 - *admin*: Add CVE-2024-55194 (long since fixed) to security alerts. [#5216](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5216) (3.2.0.3, 3.1.14.0) - *admin*: Update security alerts and clarify security policy to explain what qualifies as a vulnerability. [#5232](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5232) (3.2.0.3, 3.1.14.1, 3.0.19.1) - *admin*: Misc administrative docs fixups. [#5233](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5233) (3.2.0.3, 3.1.14.1) + - *admin*: Minor fixes to README & SECURITY, and update SECURITY with new CVE assignments. [#5320](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5320) [#5329](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5329) (3.2.0.4, 3.1.16.0, 3.0.21.0) ### ๐Ÿค Contributors - - First-time contributors since the 3.1 major release (3.2 will be the first major release to credit them): Aamir Raza, Brad Smith, Dongju Lee, Hannah Gulka, Hunter, JacksonSun-adsk, Lumina Wang, Luna Kim, Nathan Rusch, Nick D'Ademo, Shane Smith, Valery Angelique. + - First-time contributors since the 3.1 major release (3.2 will be the first major release to credit them): Aamir Raza, Brad Smith, Brian R Hanke, Dongju Lee, Hannah Gulka, Hunter, JacksonSun-adsk, Jinnie Kim, Lumina Wang, Luna Kim, Mixie, Nathan Rusch, Nick D'Ademo, Shane Smith, Valery Angelique. --- --- +Release 3.1.16.0 (Aug 1, 2026) -- compared to 3.1.15.0 +--------------------------------------------------------- + - *oiiotool*: Add thumbnail get/set commands and fix TGA thumbnail I/O. [#5236](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5236) (by @jinhgkim / Jinnie Kim) + - *api*: Add `"limits:resolution"` global attribute to cap per-dimension image size, used for guarding against decompression-bomb attacks. [#5297](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5297) + - *testing*: Add libFuzzer-based fuzzing infrastructure for format readers. [#5314](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5314) + - *texture*: Experimental GPU texture system prototype, implemented as a standalone testsuite executable (does not modify the core library). [#5228](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5228) (by @aconty / Alejandro Conty) + - *bmp*: Validate scanline file position before reading, guarding against corrupt files. [#5274](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5274) + - *cineon*: Validate bit depth against libcineon's supported set, fixing a heap out-of-bounds write on invalid bit depths. [#5283](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5283) (CVE-2026-63638) + - *dds*: Reject corrupt bytes-per-pixel before it forces a huge allocation, and clamp pixel memcpy to `sizeof(uint32_t)` to prevent stack overflow. [#5286](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5286) [#5287](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5287) + - *dpx*: Detect corrupt userbuf size with an overflow guard, and fix a heap overflow in 1-channel 10-bit filled scanline swap. [#5271](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5271) [#5298](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5298) + - *exif*: Beef up Exif error detection for corrupt or malformed blocks (affects all formats that embed Exif). [#5322](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5322) + - *exr*: Use rectangle row stride for partial edge tile reads, fixing a heap out-of-bounds write. [#5295](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5295) (CVE-2026-63422) + - *exr*: Add `check_open()` guard to the `exrinput_c` C API. [#5280](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5280) + - *ffmpeg*: Align swscale output buffers. [#5301](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5301) (by @br0nzu / Dongju Lee) + - *filesystem*: Overflow-safe bounds check in `IOMemReader::pread`. [#5262](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5262) + - *gif*: Handle empty error from gif_lib, and address corrupt files with bad resolutions and int overflow. [#5269](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5269) [#5257](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5257) + - *gif*, *targa*: Avoid int32 overflow in palette-split pixel-count math and reject implausible image dimensions before allocating, fixing a signed overflow that could crash TGA-to-GIF conversion. [#5292](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5292) [#5293](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5293) (CVE-2026-65969) + - *gif*: Guard canvas index overflow. [#5299](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5299) (by @br0nzu / Dongju Lee) + - *hdr*: Validate resolution to detect corrupted files, and resolve a format-detection conflict between the HDR and RAW readers for `.hdr` files. [#5256](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5256) [#5339](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5339) + - *ico*: Better error checking for PNG-in-ICO files, and avoid leaking an error string across a `png_chunk_error` longjmp. [#5264](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5264) [#5289](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5289) + - *iff*: Detect corrupt chunk sizes, flags, and channel configs, fixing a tile read that could write past the caller's buffer. [#5268](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5268) (CVE-2026-63419) + - *iff*: Add resolution validity checking, and reject implausible image dimensions before allocating the tile buffer. [#5285](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5285) [#5284](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5284) + - *imagebuf*: Fix a data race that could corrupt multithreaded reads. [#5325](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5325) + - *imageio*: Ignore invalid RowsPerStrip chunking. [#5300](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5300) (by @br0nzu / Dongju Lee) + - *jpeg2000*: Reject corrupt component geometry and subsampling, and guard against oversized and decompression-bomb headers before decode. [#5270](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5270) [#5327](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5327) + - *jxl*: Guard corrupt basic-info dimensions early. [#5305](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5305) + - *ptex*: More comprehensive `valid_file` and header validation. [#5265](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5265) + - *psd*: Validate `color_mode` before the RawColor early return, fixing an out-of-bounds read and allocation DoS. [#5282](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5282) (CVE-2026-63635) + - *psd*: Detect implausibly large ICC, Exif, and XMP blocks before allocating, and identify corruption of layer resolutions and EOF in strings. [#5288](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5288) [#5259](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5259) + - *psd*: Guard row interleave bounds on corrupt data, fixing an out-of-bounds read in `interleave_row`. [#5307](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5307) (CVE-2026-63420) + - *psd*: Avoid signed overflow computing layer/mask extents. [#5306](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5306) + - *raw*: Apply LibRaw memory cap before unpack to prevent OOM, and reject decompression-bomb / corrupt headers before unpack. [#5275](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5275) [#5312](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5312) + - *raw*: Pass the bad-pixels parameter through to LibRaw. [#5323](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5323) (by @antond-weta / Anton Dukhovnikov) + - *rla*: Better detection of corrupted RLE encoding. [#5337](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5337) [#5258](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5258) + - *sgi*: Size RLE offset tables by spec dimensions to prevent OOB on corrupt headers, prevent an oversized-allocation crash from a bogus RLE length/offset table, and handle corrupt 16-bit RLE runs with odd byte counts. [#5279](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5279) [#5303](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5303) [#5321](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5321) + - *softimage*: Support channel packets with differing bit depths. [#5309](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5309) + - *tiff*: Avoid use-after-scope in multithreaded scanline reads. [#5294](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5294) (CVE-2026-65970) + - *tiff*: Fix heap overflow unpacking sub-8-bit contiguous CMYK samples. [#5296](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5296) (CVE-2026-67549) + - *tiff*: Fix additional int32 overflows, and guard against decompression bombs. [#5319](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5319) + - *webp*: Improve `valid_file` to check the header for magic words. [#5266](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5266) + - *int*: Consolidate the decompression-bomb guard used across format readers into a shared helper. [#5328](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5328) + - *build*: Fix `EMBEDPLUGINS=0`, and make many build options environment-overridable. [#5272](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5272) + - *build*: Support building to WebAssembly (wasm). [#5304](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5304) (by @nickdademo / Nick D'Ademo) + - *build*: Support OpenCV 5, and add a standalone header smoke test. [#5326](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5326) + - *build*: Recommend libtiff >= 4.5 for security fixes. [#5277](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5277) + - *build*: Fix clang warnings about giflib headers on some platforms/versions. [#5263](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5263) + - *ci*: Add vfx2027 container tests; test against and document the latest dependency versions. [#5302](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5302) [#5330](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5330) + - *docs*: Fix typos. [#5349](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5349) (by @jinhgkim / Jinnie Kim) + - *docs*: Update ImageCache docs, clean up outdated docs, and fix typos. [#5352](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5352) (by @luna-y-kim / Luna Kim) + - *docs*: Fix vcpkg install command syntax in INSTALL.md. [#5332](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5332) (by @BrianHanke / Brian R Hanke) + - *admin*: SECURITY.md updates; very minor fixes to README & SECURITY; update SECURITY with new CVE assignments; document more security CVE number assignments. [#5311](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5311) [#5320](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5320) [#5329](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5329) + - *Contributors*: First-time contributors to this release: Brian R Hanke, Dongju Lee, Jinnie Kim, Nick D'Ademo. + + Release 3.1.15.0 (Jul 1, 2026) -- compared to 3.1.14.1 --------------------------------------------------------- - *deepdata*: Widen `merge_deep_pixels` srcpixel to int64_t, change its return type, and add `OIIO_NODISCARD_ERROR`. [#5252](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5252) [#5253](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5253) (by @luna-y-kim / Luna Kim) @@ -699,6 +782,12 @@ Release 3.1 (Oct 2, 2025) -- compared to 3.0.x - *span.h*: Eliminate needless definitions of std::size [#4652](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4652) (3.1.1.0) - *sysutil.h*: Improve the implementation of Sysutil::put_in_background on macOS [#4640](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4640) (by Mikael Sundell) (3.1.1.0) - *typedesc.h*: Tidying of type trait templates [#4705](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4705) (3.1.3.0) + - *fix*: Gamma precision improvements [#5038](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5038) (by Lumina Wang) (3.2.0.0, 3.1.11.0) + - *fix*: Fix UB-sanitizer warning about alignment [#5097](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5097) (3.2.0.1, 3.1.12.0) + - *fix*: Catch exceptions in print-uncaught-messages destructor [#5103](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5103) (3.2.0.1, 3.1.12.0) + - *fix*: Enhanced exception safety for our use of OpenColorIO [#5114](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5114) (3.2.0.1, 3.1.12.0) + - *fix*: Fix possible fmt exceptions where we might have passed null string [#5115](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5115) (3.2.0.1, 3.1.12.0) + - *fix*: Relax OpenColorIO exception handling: distinguish serious errors (bad config, failed processor) from benign failures (unknown role/colorspace) [#5164](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5164) (3.2.0.1, 3.1.13.0) ### ๐Ÿ— Build/test/CI and platform ports: * CMake build system and scripts: @@ -848,6 +937,26 @@ asterisk) had not previously contributed to the project. --- +Release 3.0.21.0 (Aug 1, 2026) -- compared to 3.0.20.0 +--------------------------------------------------------- + - *cineon*: Validate bit depth against libcineon's supported set, rejecting corrupt files with unsupported bit depths before they crash the vendored library. [CVE-2026-63638](https://github.com/AcademySoftwareFoundation/OpenImageIO/security/advisories/GHSA-9hxv-jvgr-3x8g) Fixed by [#5283](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5283) + - *dpx*: Detect corrupt userbuf size and guard against integer multiply overflow. [#5271](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5271) + - *exr*: Fix out-of-bounds write when reading partial edge tiles of a tiled EXR whose dimensions aren't a multiple of the tile size. [CVE-2026-63422](https://github.com/AcademySoftwareFoundation/OpenImageIO/security/advisories/GHSA-xh5r-whph-qmc5) Fixed by Fixed by [#5295](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5295) + - *gif*: Handle empty error from gif_lib. [#5269](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5269) + - *gif*: Preserve RGB values of transparent pixels instead of zeroing them. [#5188](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5188) (by @adskWangl / Lumina Wang) + - *gif*: Address corrupt files with bad resolutions and integer overflow. [#5257](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5257) + - *gif,targa*: Avoid int32 overflow in TGA-to-GIF palette-split pixel-count math that could cause a SIGSEGV. [CVE-2026-65969](https://github.com/AcademySoftwareFoundation/OpenImageIO/security/advisories/GHSA-9mwc-fjgj-8wmq) Fixed by [#5292](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5292) [#5293](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5293) + - *iff*: Detect corrupt chunk sizes, flags, and channel configurations. [CVE-2026-63419](https://github.com/AcademySoftwareFoundation/OpenImageIO/security/advisories/GHSA-w6wc-gcf4-5pj2) Fixed by [#5268](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5268) + - *psd*: Identify corruptions of layer resolutions and EOF hit mid-string. [#5259](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5259) + - *psd*: Fix indexed-color transparency handling when the transparent palette index is 0. [#5177](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5177) (by @ssh4net / Vlad Erium) + - *psd*: Detect implausibly large ICC, Exif, or XMP blocks before allocating. [#5288](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5288) + - *psd*: Guard row interleave bounds on corrupt data. [CVE-2026-63420](https://github.com/AcademySoftwareFoundation/OpenImageIO/security/advisories/GHSA-x877-h4xx-5m5j) Fixed by [#5307](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5307) + - *psd*: Validate color_mode before the RawColor early return, fixing an out-of-bounds read reachable via the RawColor config attribute on a crafted file. [CVE-2026-63635](https://github.com/AcademySoftwareFoundation/OpenImageIO/security/advisories/GHSA-3c8w-9xvm-r6gf) Fixed by [#5282](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5282) + - *tiff*: Fix the "tiff:half" hint only applying to the first MIP level. [#5240](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5240) (by @lgritz / Larry Gritz) + - *opencv*: Support OpenCV 5, add standalone header smoke test. [#5326](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5326) (by @lgritz / Larry Gritz) + - *admin*: SECURITY.md updates and new CVE assignments. [#5311](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5311) [#5320](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5320) [#5329](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5329) + + Release 3.0.20.0 (Jul 1, 2026) -- compared to 3.0.19.1 --------------------------------------------------------- - *cineon*: More robust to invalid numbers of channels and bit depths; also fixes a channel-naming counter bug and a memory leak in init(). [#5250](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5250) diff --git a/CREDITS.md b/CREDITS.md index 47725b2d22..93620e1e79 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -47,6 +47,7 @@ lg@openimageio.org * Brecht Van Lommel * Brent Davis * Brian Hall +* Brian R Hanke * Brice Gros * Campbell Barton * Carine Touraille @@ -85,6 +86,7 @@ lg@openimageio.org * Dominik Bartkiewicz * Dominik Wรณjt * Don Olmstead +* Dongju Lee * Duncan Chan * Dustin Rodrigues * Edgar Velazquez-Armendariz @@ -123,6 +125,7 @@ lg@openimageio.org * Jeremy Selan * Jesse Yurkovich * Jim Hourihan +* Jinnie Kim * Joachim Reichel * Johannes Unterguggenberger * John Burnett @@ -183,6 +186,7 @@ lg@openimageio.org * Nathan Rusch * Nicholas Yue * Nick Black +* Nick D'Ademo * Nicolas Burtnyk * Nixon Kwok * Noah Rahm (designer of our logo!)