Skip to content

Merge main into lossy-htj2k - #2562

Open
palemieux wants to merge 64 commits into
AcademySoftwareFoundation:lossy-htj2kfrom
sandflow:update-lossy-htj2k
Open

Merge main into lossy-htj2k#2562
palemieux wants to merge 64 commits into
AcademySoftwareFoundation:lossy-htj2kfrom
sandflow:update-lossy-htj2k

Conversation

@palemieux

Copy link
Copy Markdown
Collaborator

No description provided.

cary-ilm and others added 30 commits June 12, 2026 14:52
The hard-coded 4_0 release number in the new install manifest should
have been converted to a symbolic value.

Signed-off-by: Cary Phillips <cary@ilm.com>
…oftwareFoundation#2467)

Bumps [sigstore/gh-action-sigstore-python](https://github.com/sigstore/gh-action-sigstore-python) from 3.3.0 to 3.4.0.
- [Release notes](https://github.com/sigstore/gh-action-sigstore-python/releases)
- [Changelog](https://github.com/sigstore/gh-action-sigstore-python/blob/main/CHANGELOG.md)
- [Commits](sigstore/gh-action-sigstore-python@04cffa1...5b79a39)

---
updated-dependencies:
- dependency-name: sigstore/gh-action-sigstore-python
  dependency-version: 3.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…on#2474)

Bumps [msys2/setup-msys2](https://github.com/msys2/setup-msys2) from 2.31.1 to 2.32.0.
- [Release notes](https://github.com/msys2/setup-msys2/releases)
- [Changelog](https://github.com/msys2/setup-msys2/blob/main/CHANGELOG.md)
- [Commits](msys2/setup-msys2@e989830...66cd2cc)

---
updated-dependencies:
- dependency-name: msys2/setup-msys2
  dependency-version: 2.32.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…twareFoundation#2468)

Reject sample counts above 0x80000000 before rounding up to the next
power of two, since larger values cause the unsigned shift loop to wrap
and never terminate.

Signed-off-by: Cary Phillips <cary@ilm.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…emySoftwareFoundation#2470)

Validate non-null pointers when hint length or data size is non-zero,
and apply the same checks in the in-place exr_attr_set_bytes() path.

Signed-off-by: Cary Phillips <cary@ilm.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
3.8 was never actually included in any vfx reference platform year,
and the platform has been at Python 3.9+ since CY2022. And
cibuildwheel 4.0 drops support for 3.8.

This will take effect in OpenEXR v3.5.

Signed-off-by: Cary Phillips <cary@ilm.com>
…#2475)

Bumps [pypa/cibuildwheel](https://github.com/pypa/cibuildwheel) from 3.4.1 to 4.1.0.
- [Release notes](https://github.com/pypa/cibuildwheel/releases)
- [Changelog](https://github.com/pypa/cibuildwheel/blob/main/docs/changelog.md)
- [Commits](pypa/cibuildwheel@8d2b08b...2947353)

---
updated-dependencies:
- dependency-name: pypa/cibuildwheel
  dependency-version: 4.1.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Cary Phillips <cary@ilm.com>
…ademySoftwareFoundation#2472)

EXR_LOCK_WRITE_AND_DEFINE_PART() acquires the mutex on write contexts
but both success and error returns leaked the lock, deadlocking later
API calls such as exr_get_count().

Signed-off-by: Cary Phillips <cary@ilm.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…#2479)

Both macOS matrix jobs previously built x86_64, arm64, and universal2,
producing duplicate wheel filenames. Prior to AcademySoftwareFoundation#2433, the workflow
downloaded each built wheel in succession, which would cause the
duplicate wheel to overwrite the original, but it avoided an
error. The new merge-multiple in the publish job corrupt the
files, causing TestPyPI uploads to fail with "Mis-matched data size".

This change builds x86_64 and universal2 on macos-15-intel and arm64
on macos-latest so merged artifacts have unique names.

This also adds a validation step to the python-wheels.yml workflow to
ensure the wheels have the expected structure.

Signed-off-by: Cary Phillips <cary@ilm.com>
…ners (AcademySoftwareFoundation#2483)

GitHub Actions deprecated Node 20 and now forces Node 24 by default,
which requires glibc >= 2.25. The VFX 2021/2022 containers are CentOS
7 (glibc 2.17) and can't run Node 24, breaking the checkout step.

Set ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true to allow the runner
to use the Node 20 glibc-2.17 build installed in /node20217, which
is the existing workaround for these old containers.

Signed-off-by: Cary Phillips <cary@ilm.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…areFoundation#2490)

A negative int cast to uint64_t bypassed the buffer size check and
allowed exr_read_chunk() to write past a caller buffer.

Addresses GHSA-gjpj-qv64-vwhf

Signed-off-by: Cary Phillips <cary@ilm.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…emySoftwareFoundation#2488)

The row() method in TypedDeepImageChannel, TypedFlatImageChannel, and
SampleCountChannel is documented as 0-based within the data window,
but used the _base offset meant for absolute (x, y) access. Index the
compact backing arrays instead so row(0) aliases the first pixel when
dataWindow.min is non-zero.

Addresses https://github.com/AcademySoftwareFoundation/openexr/security/advisories/GHSA-hwmv-39v6-739m

Signed-off-by: Cary Phillips <cary@ilm.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…eFoundation#2487)

When --pixelmode float (or --bench) is used, outHeader channels are
rewritten from the input type (e.g. HALF) to FLOAT.  The DeepSlice
framebuffer entries were already built from outHeader, requesting 4-byte
FLOAT writes.  However, the sample data buffers were allocated using the
*input* header's channel types (2 bytes for HALF), so readPixels() wrote
4-byte values into 2-byte buffers — a heap buffer overflow.

Fix: allocate sampleData using outHeader.channels() (the output/requested
type) so that buffer sizes match the per-sample write size.

Addresses https://github.com/AcademySoftwareFoundation/openexr/security/advisories/GHSA-6jj8-cxcr-j8hm

Signed-off-by: Cary Phillips <cary@ilm.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…ion#2495)

Bumps [vmactions/freebsd-vm](https://github.com/vmactions/freebsd-vm) from 1.4.6 to 1.4.8.
- [Release notes](https://github.com/vmactions/freebsd-vm/releases)
- [Commits](vmactions/freebsd-vm@a6de934...b84ab55)

---
updated-dependencies:
- dependency-name: vmactions/freebsd-vm
  dependency-version: 1.4.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…ndation#2494)

Check packed AC/DC and RLE buffer sizes against SIZE_MAX before calling
alloc_fn(size_t). Without this, uint64_t sizes above 4 GiB truncate on
32-bit builds while later DWAA decode logic still uses the full size,
leading to heap corruption during AC inflate.

Addresses https://github.com/AcademySoftwareFoundation/openexr/security/advisories/GHSA-6662-fq6f-93mp

Signed-off-by: Cary Phillips <cary@ilm.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…areFoundation#2493)

In update_pack_unpack_ptrs(), decode->chunk.unpacked_size is uint64_t
but was passed directly to internal_decode_alloc_buffer() which takes
size_t. On ILP32 builds a crafted chunk with unpacked_size > 4 GiB
silently truncates, allocating a tiny buffer while the decompressor
and unpacker iterate over the full declared channel width, causing an
out-of-bounds read.

Add a truncation check before the allocation and return
EXR_ERR_OUT_OF_MEMORY if unpacked_size exceeds SIZE_MAX.

Addresses https://github.com/AcademySoftwareFoundation/openexr/security/advisories/GHSA-v6v5-344m-64vm

Signed-off-by: Cary Phillips <cary@ilm.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…Foundation#2484)

* Fix signed integer overflow in unpack_sample_table()

Declare w and h as int64_t instead of int32_t so that index
arithmetic y*w and w*h in unpack_sample_table() does not overflow
when tile dimensions are large (e.g. 46342x46342).

Addresses https://github.com/AcademySoftwareFoundation/openexr/security/advisories/GHSA-rqp5-pmwm-wj6x

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Cary Phillips <cary@ilm.com>

* declare y as int64_t

Signed-off-by: Cary Phillips <cary@ilm.com>

---------

Signed-off-by: Cary Phillips <cary@ilm.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…2481)

Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.3 to 7.0.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@df4cb1c...9c091bb)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Cary Phillips <cary@ilm.com>
…oftwareFoundation#2492)

In update_pack_unpack_ptrs(), sampsize was computed as size_t, so on
ILP32 builds a tile with width*height >= 2^30 wraps to zero (or four
with the INDIVIDUAL flag), causing the sample-count table to be
allocated too small and unpack_sample_table() to read far past it.

Compute the size in uint64_t, check for truncation before converting
to size_t, and return EXR_ERR_OUT_OF_MEMORY if the required size
exceeds SIZE_MAX.

Addresses https://github.com/AcademySoftwareFoundation/openexr/security/advisories/GHSA-p42q-g5c9-mh9w

Signed-off-by: Cary Phillips <cary@ilm.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…undation#2496)

Dotless channel names used multiView[0] without checking for an empty
vector. Use defaultViewName() so malformed files return "" instead of
OOB access.

Addresses https://github.com/AcademySoftwareFoundation/openexr/security/advisories/GHSA-g8f2-r72m-48vx

Signed-off-by: Cary Phillips <cary@ilm.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…ion#2498)

* Avoid memory allocation in idmanifest parsing

Signed-off-by: Peter Hillman <peterh@wetafx.co.nz>

* check for negative string count, fix table size count

Signed-off-by: Peter Hillman <peterh@wetafx.co.nz>

---------

Signed-off-by: Peter Hillman <peterh@wetafx.co.nz>
Co-authored-by: Cary Phillips <cary@ilm.com>
…cademySoftwareFoundation#2486)

* Fix integer overflow in Array2D::resizeErase() on ILP32/LLP64 builds

sizeX * sizeY used long arithmetic, which is 32 bits on ILP32 (32-bit
Linux) and on Windows (MSVC LLP64). A tile size of 65537x65537 overflows
to a small positive value, causing new[] to under-allocate and subsequent
tile decoding to write past the buffer.

Cast both operands to size_t before multiplying so the allocation is
always correct regardless of the width of long.

Addresses https://github.com/AcademySoftwareFoundation/openexr/security/advisories/GHSA-f667-c4wm-c8gq

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Cary Phillips <cary@ilm.com>

* validate non-negative sizes

Signed-off-by: Cary Phillips <cary@ilm.com>

---------

Signed-off-by: Cary Phillips <cary@ilm.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…areFoundation#2469)

Validate the source rgba pointer before memcpy in
exr_attr_preview_create() and the same-dimensions update path in
exr_attr_set_preview(), preventing a NULL pointer dereference when
nonzero preview dimensions are supplied without pixel data.

Signed-off-by: Cary Phillips <cary@ilm.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…emySoftwareFoundation#2473)

Validate num_channels > 0 with entries == NULL before pointer
arithmetic, covering exr_set_channels() and exr_attr_set_channels().

Also, refactor exr_attr_set_channels to call exr_attr_chlist_duplicate()
since it does the same work.

Addresses https://github.com/AcademySoftwareFoundation/openexr/security/advisories/GHSA-mqmw-xv8w-5jh4

Signed-off-by: Cary Phillips <cary@ilm.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…undation#2500)

Name::operator= leaves the string without a terminating null if the
string is longer than MAX_LENGTH. Write a null to ensure there is one.

Signed-off-by: Cary Phillips <cary@ilm.com>
…wareFoundation#2497)

* Changes for v3.14.13

Signed-off-by: Peter Hillman <peterh@wetafx.co.nz>

* update notes with additional PRs

Signed-off-by: Cary Phillips <cary@ilm.com>

* Add 2479 to notes

Signed-off-by: Cary Phillips <cary@ilm.com>

* fix duplicate 3.4.13 security references

Signed-off-by: Cary Phillips <cary@ilm.com>

* 3.4.13 news

Signed-off-by: Cary Phillips <cary@ilm.com>

* update changes for v3.3.12

Signed-off-by: Peter Hillman <peterh@wetafx.co.nz>

* update CHANGES for 3.2.10

Signed-off-by: Peter Hillman <peterh@wetafx.co.nz>

* news & notes for 3.3 and 3.2

Signed-off-by: Cary Phillips <cary@ilm.com>

* fix links

Signed-off-by: Cary Phillips <cary@ilm.com>

---------

Signed-off-by: Peter Hillman <peterh@wetafx.co.nz>
Signed-off-by: Cary Phillips <cary@ilm.com>
Co-authored-by: Peter Hillman <peterh@wetafx.co.nz>
…wareFoundation#2503)

Signed-off-by: Peter Hillman <peterh@wetafx.co.nz>
Co-authored-by: Cary Phillips <cary@ilm.com>
dependabot Bot and others added 26 commits July 3, 2026 20:12
Bumps [actions/cache](https://github.com/actions/cache) from 6.0.0 to 6.1.0.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](actions/cache@2c8a9bd...55cc834)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: 6.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Cary Phillips <cary@ilm.com>
…ion#2512)

* Update security policy regarding CVE requests

Clarify the conditions under which we will/won't request CVEs.

Signed-off-by: Cary Phillips <cary@ilm.com>

* update policy on tool bugs

Signed-off-by: Cary Phillips <cary@ilm.com>

* remove confusing statement

Signed-off-by: Cary Phillips <cary@ilm.com>

---------

Signed-off-by: Cary Phillips <cary@ilm.com>
…Foundation#2521)

Bumps [github/codeql-action/init](https://github.com/github/codeql-action) from 4.36.2 to 4.36.3.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@8aad20d...54f647b)

---
updated-dependencies:
- dependency-name: github/codeql-action/init
  dependency-version: 4.36.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Cary Phillips <cary@ilm.com>
…SoftwareFoundation#2520)

Bumps [github/codeql-action/upload-sarif](https://github.com/github/codeql-action) from 4.36.2 to 4.36.3.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@8aad20d...54f647b)

---
updated-dependencies:
- dependency-name: github/codeql-action/upload-sarif
  dependency-version: 4.36.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Cary Phillips <cary@ilm.com>
…areFoundation#2519)

Bumps [github/codeql-action/analyze](https://github.com/github/codeql-action) from 4.36.2 to 4.36.3.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@8aad20d...54f647b)

---
updated-dependencies:
- dependency-name: github/codeql-action/analyze
  dependency-version: 4.36.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Cary Phillips <cary@ilm.com>
…oftwareFoundation#2522)

setDeepSliceData() used strcmp(c.name(), "G"/"B"/"A") to select the
RGB channel offset, which only matched unprefixed channel names. For
layer-prefixed channels like left.G and left.B the comparison failed,
leaving channels 1 and 2 pointing at their initial (stale heap) data
while channel 0 received all decoded samples.

Fix: check only the final character of the channel name, consistent
with how channelNameToRGBA() already identifies the channel suffix.

Addresses https://github.com/AcademySoftwareFoundation/openexr/security/advisories/GHSA-pf59-r2mc-x746

Signed-off-by: Cary Phillips <cary@ilm.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…oftwareFoundation#2527)

NumPy 2.5+ no longer ships manylinux_2_17 wheels and requires
GCC >= 10.3 when building from source. The manylinux2014
containers only provides GCC 10.2.1, so cibuildwheel's test phase fails
when pip cannot install numpy.

Use manylinux_2_28 for aarch64, x86_64, and i686 builds (GCC 11, glibc
2.28), which has compatible pre-built numpy wheels and satisfies the
compiler requirement.

Signed-off-by: Cary Phillips <cary@ilm.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…ation#2528)

initScanLine() adjusted Slice base pointers using full pixel-space
origin offsets, but OpenEXR addresses subsampled channels with
origin.x / xSampling and origin.y / ySampling. Use Slice::Make()
so the base pointer matches the library's coordinate math.

Fixes https://github.com/AcademySoftwareFoundation/openexr/security/advisories/GHSA-7h7v-98cr-8ppw

Signed-off-by: Cary Phillips <cary@ilm.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…dation#2523)

Keep init, analyze, and upload-sarif on the same version so partial
updates do not break the CodeQL workflow with a version mismatch.

Signed-off-by: Cary Phillips <cary@ilm.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Bumps the codeql group with 3 updates: [github/codeql-action/init](https://github.com/github/codeql-action), [github/codeql-action/analyze](https://github.com/github/codeql-action) and [github/codeql-action/upload-sarif](https://github.com/github/codeql-action).


Updates `github/codeql-action/init` from 4.36.3 to 4.37.0
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@54f647b...99df26d)

Updates `github/codeql-action/analyze` from 4.36.3 to 4.37.0
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@54f647b...99df26d)

Updates `github/codeql-action/upload-sarif` from 4.36.3 to 4.37.0
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@54f647b...99df26d)

---
updated-dependencies:
- dependency-name: github/codeql-action/init
  dependency-version: 4.37.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: codeql
- dependency-name: github/codeql-action/analyze
  dependency-version: 4.37.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: codeql
- dependency-name: github/codeql-action/upload-sarif
  dependency-version: 4.37.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: codeql
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [rules_cc](https://github.com/bazelbuild/rules_cc) from 0.2.20 to 0.2.22.
- [Release notes](https://github.com/bazelbuild/rules_cc/releases)
- [Commits](bazelbuild/rules_cc@0.2.20...0.2.22)

---
updated-dependencies:
- dependency-name: rules_cc
  dependency-version: 0.2.22
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Cary Phillips <cary@ilm.com>
…pling (AcademySoftwareFoundation#2530)

* Fix exrmultiview heap OOB when union dataWindow misaligns with subsampling

Validate the combined data window against each input channel's x/y
subsampling before allocating pixel buffers or calling readPixels,
matching ImfHeader checks. Reject misaligned unions with ArgExc instead
of reading past undersized buffers.

Addresses https://github.com/AcademySoftwareFoundation/openexr/security/advisories/GHSA-gjf7-wjjw-xq56

Co-authored-by: Cursor <cursoragent@cursor.com>
Signed-off-by: Cary Phillips <cary@ilm.com>

* Reject all input with sampling != 1

Subsampling is rare, and exrmultiview not commonly used, so this
solution seems cleaner: just don't handle subsampling at all.

Signed-off-by: Cary Phillips <cary@ilm.com>

---------

Signed-off-by: Cary Phillips <cary@ilm.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…nnels (AcademySoftwareFoundation#2525)

Signed-off-by: Kimball Thurston <kthurston@wetafx.co.nz>
Co-authored-by: Cary Phillips <cary@ilm.com>
…ySoftwareFoundation#2548)

Mirror the existing tile-path check in exr_read_scanline_chunk_info():
for EXR_COMPRESSION_NONE, require packed_size to equal unpacked_size
before decode allocates an unpack buffer that no decompressor fills.

Covers flat and deep scanline chunk leaders.

Addresses https://github.com/AcademySoftwareFoundation/openexr/security/advisories/GHSA-7hgm-jxjc-6hgg

Addresses https://github.com/AcademySoftwareFoundation/openexr/security/advisories/GHSA-fwhm-jj7c-mx7v

Signed-off-by: Cary Phillips <seabeepea@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…ation#2547)

DWA UNKNOWN: pass actual_out to exr_uncompress_buffer() and require the
inflated byte count to match UNKNOWN_UNCOMPRESSED_SIZE before copying
planar data to output rows.

ZIP/ZIPS: require actual_out_bytes to equal the expected uncompressed
chunk size before reconstructing and unpacking pixels.

Addresses https://github.com/AcademySoftwareFoundation/openexr/security/advisories/GHSA-38j8-88v6-jrm7

Addresses https://github.com/AcademySoftwareFoundation/openexr/security/advisories/GHSA-r864-gwqv-q2hp

Signed-off-by: Cary Phillips <seabeepea@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…ademySoftwareFoundation#2541)

The convert path computed pixel_count as int64_t but passed
samplesize * pixel_count to std::vector::resize(size_type), which
truncates on ILP32 and left readPixels() writing past the buffer.

Validate the size fits in size_t before resizing channelstore.

Addresses https://github.com/AcademySoftwareFoundation/openexr/security/advisories/GHSA-r24r-74rc-588f

Signed-off-by: Cary Phillips <cary@ilm.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…ion#2540)

Array2D computed sizeX * sizeY in 32-bit arithmetic before new[].
On ILP32, a 65537 x 65537 allocation wraps to a tiny buffer while
decode still writes the full image.

Validate the element count in uint64_t and reject dimensions whose
product exceeds size_t before constructing or resizing Array2D.

Addresses https://github.com/AcademySoftwareFoundation/openexr/security/advisories/GHSA-h56j-j82x-w3fp

Addresses https://github.com/AcademySoftwareFoundation/openexr/security/advisories/GHSA-wrw5-mm52-r3h8

Signed-off-by: Cary Phillips <cary@ilm.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…areFoundation#2539)

exrmetrics computed image buffer sizes as uint64_t but passed them to
std::vector::resize(size_type), which silently truncates on 32-bit
builds and left decode writing past undersized channel and sample-count
buffers.

Validate count and size to confirm the cast to size_t does not overflow.

Addresses https://github.com/AcademySoftwareFoundation/openexr/security/advisories/GHSA-r8mj-rhfc-38g4
Addresses https://github.com/AcademySoftwareFoundation/openexr/security/advisories/GHSA-pgc2-hppj-q623
Addresses https://github.com/AcademySoftwareFoundation/openexr/security/advisories/GHSA-g5m8-8w79-34q8
Addresses https://github.com/AcademySoftwareFoundation/openexr/security/advisories/GHSA-xc77-xm9h-qxm4

Signed-off-by: Cary Phillips <cary@ilm.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…demySoftwareFoundation#2535)

ddata[1] (packed_size) and ddata[2] (unpacked_size) both had
'< 0 || > INT_MAX' guards, but ddata[0] (sample_count_table_size)
only had '< 0'. A value > INT_MAX stored in the uint64_t field then
gets truncated to size_t on ILP32, causing an undersized allocation
followed by a heap overflow when exr_read_deep_chunk writes the full
64-bit byte count into it.

Addresses https://github.com/AcademySoftwareFoundation/openexr/security/advisories/GHSA-m5cq-cx25-qw53

Signed-off-by: Cary Phillips <cary@ilm.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…eFoundation#2549)

README.md: CODE_OF_CONDUCT → CODE_OF_CONDUCT.md
CONTRIBUTING.md:
  - website/requirements.txtg → website/requirements.txt
  - #Creating-a-Major/Minor-Release → #creating-a-majorminor-release
  - #required-approvals → #code-review-and-required-approvals

Signed-off-by: Cary Phillips <cary@ilm.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…ion#2552)

Bumps [vmactions/freebsd-vm](https://github.com/vmactions/freebsd-vm) from 1.5.0 to 1.5.2.
- [Release notes](https://github.com/vmactions/freebsd-vm/releases)
- [Commits](vmactions/freebsd-vm@5a72679...77ed28d)

---
updated-dependencies:
- dependency-name: vmactions/freebsd-vm
  dependency-version: 1.5.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps the codeql group with 3 updates: [github/codeql-action/init](https://github.com/github/codeql-action), [github/codeql-action/analyze](https://github.com/github/codeql-action) and [github/codeql-action/upload-sarif](https://github.com/github/codeql-action).


Updates `github/codeql-action/init` from 4.37.0 to 4.37.1
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@99df26d...7188fc3)

Updates `github/codeql-action/analyze` from 4.37.0 to 4.37.1
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@99df26d...7188fc3)

Updates `github/codeql-action/upload-sarif` from 4.37.0 to 4.37.1
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@99df26d...7188fc3)

---
updated-dependencies:
- dependency-name: github/codeql-action/init
  dependency-version: 4.37.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: codeql
- dependency-name: github/codeql-action/analyze
  dependency-version: 4.37.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: codeql
- dependency-name: github/codeql-action/upload-sarif
  dependency-version: 4.37.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: codeql
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Cary Phillips <cary@ilm.com>
…reFoundation#2553)

Bumps [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish) from 1.14.0 to 1.14.1.
- [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases)
- [Commits](pypa/gh-action-pypi-publish@cef2210...ba38be9)

---
updated-dependencies:
- dependency-name: pypa/gh-action-pypi-publish
  dependency-version: 1.14.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Cary Phillips <cary@ilm.com>
…ion#2554)

Bumps [actions/setup-python](https://github.com/actions/setup-python) from 6.3.0 to 7.0.0.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](actions/setup-python@ece7cb0...5fda3b9)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Cary Phillips <cary@ilm.com>
…2555)

Bumps [actions/checkout](https://github.com/actions/checkout) from 7.0.0 to 7.0.1.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@9c091bb...3d3c42e)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 7.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
@palemieux
palemieux requested review from cary-ilm, kdt3rd and peterhillman and removed request for kdt3rd July 29, 2026 20:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants