This release fixes a few reported bugs, plus a lot of bugs found by recent improvements to fuzzing (thanks @dloebl!).
- vector: mask supported Highway targets by builtin targets [kleisauke]
- fix Highway paths on big-endian targets [kleisauke]
- fix build with MSVC [star-hengxing]
- fix compatibility with glibc 2.43 [mtasaka]
- pngload: avoid an expensive check during header read [kleisauke]
- improve vips7 JPEG load compatibility [kleisauke]
- fix saving 3-band MATRIX images [kleisauke]
- uhdrload: expose original gainmap scale factor [lovell]
- uhdrsave: control generated gainmap scale factor [lovell]
- source: guard against length truncation [Niebelungen-D]
- shrinkh: fix possible OOB read in Highway path [dloebl] [kleisauke]
- string_to_array_double: ensure delimiter list is consistent [dloebl] [lovell]
- fix loading/saving of non-8-bit JXL images [DarthSim]
- invertlut: check height before interpolating values [dloebl] [lovell]
- extract: check bounds using unsigned arithmetic [Niebelungen-D] [lovell]
- matrixload: guard against empty and very large inputs [Niebelungen-D] [lovell]
- unpremultiply: check
alpha_bandis in range [Niebelungen-D] [lovell] - maplut: ensure lookup table index is unsigned [dloebl] [lovell]
- fwfft: fix heap-buffer-overflow for single-row images [dloebl]
- draw_flood: reject out-of-bounds start point [dloebl]
- openexrload: fix a leak with invalid images [kleisauke]
- canny: fix UB in atan2 lookup table init [dloebl] [kleisauke]
- conva: guard against divide by zero [kleisauke]
- csvload: check whitespace and separator are ASCII [Niebelungen-D] [lovell]
- bandrank: check
indexis in range [Niebelungen-D] [lovell] - remainder_const: guard against divide by zero [kleisauke]
- vips_window_take: prevent int underflow for small mapped images [jcupitt]
- composite: fix UB (invalid-enum-value) in
->build()[kleisauke] - add: prevent possible int overflow [kleisauke]
- bandmean: prevent possible int overflow [kleisauke]
- fastcor: prevent possible int overflow [kleisauke]
- multiply: prevent possible int overflow [kleisauke]
- subtract: prevent possible int overflow [kleisauke]
- hist_cum: prevent possible int overflow [kleisauke]
- convasep: prevent possible int overflow [kleisauke]
- conva: prevent possible int overflow [kleisauke]
- convi: prevent possible int overflow [kleisauke]
- draw_circle: prevent possible int overflow [kleisauke]
- csvload: guard against negative index access [kleisauke]
- convi: guard against invalid shift [kleisauke]
- nary: guard against empty input [kleisauke]
- maplut: add missing overflow checks [kleisauke]
- jpegsave: fix assert fail when saving 2-band image [kleisauke]
- LabS2LabQ: fix UB (undefined-shift) [kleisauke]
- convasep: use unsigned accumulator where appropriate [kleisauke]
- min: fix possible OOB read with complex images [kleisauke]
- max: fix possible OOB read with complex images [kleisauke]
- guard against dimension overflow [ElhananHaenel] [kleisauke]
- gifload: prevent int overflow on 32-bit platforms [ElhananHaenel] [kleisauke]
- sign: use ready image instead of
unary->in[kleisauke] - statistic: use ready image instead of
statistic->in[kleisauke] - hist_plot: handle near-zero ranges for float images [kleisauke]
- affine: check bounds using unsigned arithmetic [kleisauke]
Windows binaries here:
https://github.com/libvips/build-win64-mxe/releases/tag/v8.18.1