Release 3.1.17.0 (Sep 1, 2026) -- compared to 3.1.16.0
- raw: Add
raw:thumbnail_indexandraw:thumbnail_sorthints to select a specific embedded thumbnail, plus assorted thumbnail fixes and unit tests. #5334 (by @antond-weta / Anton Dukhovnikov) - raw: Allow vector types in multi-value hints (white balance as a float4, cropbox/greybox as int2 boxes). #5386 (by @antond-weta / Anton Dukhovnikov)
- raw: Fix undebayered flip mapping, buffer bounds, and overflow issues. #5415
- exr: Convert mixed-native-integer-depth channels through proper rescaling instead of reinterpreting bytes when writing OpenEXR (also fixes
copy_imageandiconvertnative fast paths). #5340 (by @lgritz / Larry Gritz) - oiiotool: More robust handling of failed reads: preserve the reader's specific error message instead of a generic "file not found", don't dereference specs of a failed read, and safer error message marshalling. #5380 #5377 #5401 (by @lgritz / Larry Gritz)
- IBA: Detect iterator read errors in orientation functions (flip, flop, rotate90/180/270, transpose). #5355 (by @luna-y-kim / Luna Kim)
- writers: Don't write
thumbnail_*metadata to formats that can't hold a thumbnail. #5357 (by @jinhgkim / Jinnie Kim) - readers: Use
check_open()andcheck_compression_ratio()in all readers that lacked them, guarding against decompression bombs and implausible header dimensions. #5342 (by @lgritz / Larry Gritz) - bmp: Decompression-bomb guard, UB-safe height negation, and scanline bounds checks. #5371 (by @lgritz / Larry Gritz)
- exif: Harden the shared Exif decoder against malformed input (affects all formats that embed Exif). #5399 (by @lgritz / Larry Gritz)
- ffmpeg: Fix heap bounds, bad packet handling, add checks at open, and other fixes. #5406 (by @lgritz / Larry Gritz)
- fits: Validate the NAXIS count against the permitted 0-999 range. #5370 (by @lgritz / Larry Gritz)
- gif: Reject a short graphics-control extension block. #5366 (by @lgritz / Larry Gritz)
- icc: Fix out-of-bounds pointer formation, use alignment-safe reads, and 64-bit tag bounds in the shared ICC profile decoder (jpeg, png, tiff, webp, jpeg2000, psd). #5417 (by @lgritz / Larry Gritz)
- jpeg: More detection of corrupt files. #5376 (by @lgritz / Larry Gritz)
- jpegxl: Harden against corrupt input. #5378 (by @lgritz / Larry Gritz)
- pnm: Use 64-bit scanline math to avoid integer overflow. #5344 (by @lgritz / Larry Gritz)
- psd: Harden reader against oversized/bomb headers and ZIP-layer buffer overflow. #5348 (by @lgritz / Larry Gritz)
- ptex: Guard null face-data returns; add malformed-header tests. #5365 (by @lgritz / Larry Gritz)
- rla: Terminate the subimage chain and bounds-check the offset table. #5403 (by @lgritz / Larry Gritz)
- tiff: Hardening: prevent OOB read on failed raw-strip reads, 64-bit overflow protection. #5336 (by @lgritz / Larry Gritz)
- xmp: Fix
encode_xmp()for aliased metadata names such asIPTC:Rating/xmp:Rating. #5108 (by @Qi-fly) - zfile: Check
gzreadreturns for truncated or corrupt input. #5372 - fix: When reading xmp, bound decode recursion and growth, escape encoder output. #5405 (by @lgritz / Larry Gritz)
- fix: Fix ImageBuf error message with too few format arguments aborting. #5343
- fix: OpenColorIO exception safety improvements. #5428
- fix: Improve
ImageSpec::default_channel_namesnchannels safety. #5368 - simd.h: Fix NEON
vfloat4::load(values,n)reading past the end of the buffer. #5404 - simd.h: Fill in missing NEON paths in simd.h. #5412
- simd.h: Treat Windows ARM64EC builds as ARM so the NEON path is taken. #5369 (by @wayne-arnold-adsk / Wayne Arnold)
- filesystem.h: Use 64-bit file offsets on Windows. #5354 (by @Maxi741cv / Mixie)
- threads.h: Annotate
spin_mutexandspin_rw_mutexfor ThreadSanitizer. #5429 (by @NathanGray-ChurchillNavigation / Nathan Gray) - build: Fix declaration mismatch for unity builds on Windows. #5360
- build: Guard libtiff's missing Deflate target. #5313 (by @zachlewis / Zach Lewis)
- build: Fix
CLANG_FORMAT_INCLUDEStargets. #5373 (by @jinhgkim / Jinnie Kim) - deps: Raise LibRaw recommended minimum to 0.21.3 (hard minimum still 0.20.0). #5383
- ci: Update all GHA actions to the latest versions. #5381
- docs: Correct Doxygen style comments in IOProxy. #5347
- Contributors: First-time contributors to this release: Mixie, Nathan Gray, Qi-fly.