Skip to content

Commit bcba3ed

Browse files
authored
Merge branch 'AcademySoftwareFoundation:main' into R3D
2 parents e33b026 + 6ea45b1 commit bcba3ed

21 files changed

Lines changed: 505 additions & 53 deletions

.github/workflows/build-steps.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,9 @@ on:
8888
type: string
8989
build_local_deps:
9090
type: string
91+
oiio_python_bindings_backend:
92+
type: string
93+
default: ''
9194
secrets:
9295
PASSED_GITHUB_TOKEN:
9396
required: false
@@ -136,6 +139,7 @@ jobs:
136139
OpenImageIO_BUILD_LOCAL_DEPS: ${{inputs.build_local_deps}}
137140
SETENVS: ${{inputs.setenvs}}
138141
DEPCMDS: ${{inputs.depcmds}}
142+
OIIO_PYTHON_BINDINGS_BACKEND: ${{ inputs.oiio_python_bindings_backend }}
139143

140144
steps:
141145
- name: install nodejs20glibc2.17

.github/workflows/ci.yml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -353,8 +353,9 @@ jobs:
353353
# Override required_deps to be 'all' and explicitly list as optional
354354
# only the ones we are intentionally not testing for those jobs.
355355
required_deps: ${{ matrix.required_deps || 'all' }}
356-
optional_deps: ${{ matrix.optional_deps || 'CUDAToolkit;DCMTK;JXL;Nuke;OpenGL;openjph;OpenVDB;Ptex;pystring;Qt5;R3DSDK;' }}${{matrix.optional_deps_append}}
356+
optional_deps: ${{ matrix.optional_deps || 'CUDAToolkit;DCMTK;JXL;Nuke;OpenGL;openjph;OpenVDB;Ptex;pystring;Qt5;R3DSDK;Libheif;' }}${{matrix.optional_deps_append}}
357357
build_local_deps: ${{ matrix.build_local_deps }}
358+
oiio_python_bindings_backend: ${{ matrix.oiio_python_bindings_backend || '' }}
358359
strategy:
359360
fail-fast: false
360361
matrix:
@@ -381,6 +382,7 @@ jobs:
381382

382383
- desc: latest releases gcc13 C++20 py3.12 avx2 exr3.4 ocio2.4
383384
nametag: linux-latest-releases
385+
oiio_python_bindings_backend: both
384386
runner: ubuntu-24.04
385387
cc_compiler: gcc-13
386388
cxx_compiler: g++-13
@@ -656,6 +658,7 @@ jobs:
656658
required_deps: ${{ matrix.required_deps || 'all' }}
657659
optional_deps: ${{ matrix.optional_deps || 'Nuke;R3DSDK;' }}${{matrix.optional_deps_append}}
658660
build_local_deps: ${{ matrix.build_local_deps }}
661+
oiio_python_bindings_backend: ${{ matrix.oiio_python_bindings_backend || '' }}
659662
strategy:
660663
fail-fast: false
661664
matrix:
@@ -676,6 +679,7 @@ jobs:
676679
- desc: MacOS-14-ARM aclang15/C++20/py3.13
677680
runner: macos-14
678681
nametag: macos14-arm-py313
682+
oiio_python_bindings_backend: both
679683
cc_compiler: /usr/bin/clang
680684
cxx_compiler: /usr/bin/clang++
681685
cxx_std: 20
@@ -739,6 +743,7 @@ jobs:
739743
required_deps: ${{ matrix.required_deps || 'all' }}
740744
optional_deps: ${{ matrix.optional_deps || 'BZip2;CUDAToolkit;DCMTK;FFmpeg;GIF;JXL;Libheif;LibRaw;Nuke;OpenCV;OpenGL;OpenJPEG;openjph;OpenCV;OpenVDB;Ptex;pystring;Qt5;Qt6;TBB;R3DSDK;${{matrix.optional_deps_append}}' }}
741745
build_local_deps: ${{ matrix.build_local_deps }}
746+
oiio_python_bindings_backend: ${{ matrix.oiio_python_bindings_backend || '' }}
742747
strategy:
743748
fail-fast: false
744749
matrix:
@@ -753,6 +758,7 @@ jobs:
753758
- desc: Windows-2025 VS2022
754759
runner: windows-2025
755760
nametag: windows-2025
761+
oiio_python_bindings_backend: both
756762
generator: "Visual Studio 17 2022"
757763
python_ver: "3.12"
758764
ctest_test_timeout: "240"

CHANGES.md

Lines changed: 79 additions & 0 deletions
Large diffs are not rendered by default.

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
cmake_minimum_required (VERSION 3.18.2...4.0)
66

7-
set (OpenImageIO_VERSION "3.2.0.1")
7+
set (OpenImageIO_VERSION "3.2.0.2")
88
set (OpenImageIO_VERSION_OVERRIDE "" CACHE STRING
99
"Version override (use with caution)!")
1010
mark_as_advanced (OpenImageIO_VERSION_OVERRIDE)

SECURITY.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,15 @@ None known
5050

5151
Most recent fixes listed first, more or less:
5252

53+
- CVE yet to be assigned: Signed integer overflow in SwapRGBABytes loop index leads to out-of-bounds read/write in DPX ABGR decoder / [advisory](https://github.com/AcademySoftwareFoundation/OpenImageIO/security/advisories/GHSA-g267-j53j-5258) / [Fix: PR5170](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5170) (Fixed in 3.0.18.1, 3.1.13.1)
54+
- CVE yet to be assigned: Signed integer overflow in ConvertCbYCrYToRGB leads to heap out-of-bounds write in DPX 4:2:2 decoder / [advisory](https://github.com/AcademySoftwareFoundation/OpenImageIO/security/advisories/GHSA-2jr5-q49v-3858) / [Fix: PR5170](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5170) (Fixed in 3.0.18.1, 3.1.13.1)
55+
- CVE yet to be assigned: Integer overflow in QueryRGBBufferSizeInternal leads to heap out-of-bounds write in DPX decoder (kCbYCr and kABGR) / [advisory](https://github.com/AcademySoftwareFoundation/OpenImageIO/security/advisories/GHSA-cq46-hp4h-cvfr) / [Fix: PR5170](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5170) (Fixed in 3.0.18.1, 3.1.13.1)
56+
- CVE yet to be assigned: Integer wraparound in bounds check of decode_pixel leads to out-of-bounds read in TGA paletted image decoder / [advisory](https://github.com/AcademySoftwareFoundation/OpenImageIO/security/advisories/GHSA-mq8j-73c4-cr55) / [Fix: PR5165](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5165) (Fixed in 3.2.0.1, 3.1.13.0, 3.0.18.0)
57+
- CVE yet to be assigned: HEIF Heap overflow / [advisory](https://github.com/AcademySoftwareFoundation/OpenImageIO/security/advisories/GHSA-gmrp-x952-3m66) / [Fix: PR5166](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5166) (Fixed in 3.2.0.1, 3.1.13.0, 3.0.18.0)
58+
- CVE yet to be assigned: JPEG2000 (OpenJPH) signed integer overflow in buffer allocation / [advisory](https://github.com/AcademySoftwareFoundation/OpenImageIO/security/advisories/GHSA-pj45-cf3g-28gq) / [Fix: PR5143](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5143) (Fixed in 3.2.0.1, 3.1.13.0, 3.0.18.0)
59+
- CVE yet to be assigned: Softimage PIC RLE decoder heap buffer overflow — longCount not clamped to image width / [advisory](https://github.com/AcademySoftwareFoundation/OpenImageIO/security/advisories/GHSA-4499-j545-7q33) / [Fix: PR5142](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5142) (Fixed in 3.2.0.1, 3.1.13.0, 3.0.18.0)
60+
- CVE yet to be assigned: SGI RLE decoder heap buffer overflow — OIIO_DASSERT bounds checks are no-ops in release builds / [advisory](https://github.com/AcademySoftwareFoundation/OpenImageIO/security/advisories/GHSA-jg3q-vm3q-2j35) / [#5141](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5141) (Fixed in 3.2.0.1, 3.1.13.0, 3.0.18.0)
61+
- CVE-2026-7582: DDS Image ddsinput.cpp out-of-bounds write. [#5131](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/5131) (Fixed in 3.2.0.1, 3.1.13.0, 3.0.18.0)
5362
- CVE-2024-40630: Fixed incorrect image size for certain HEIC files.
5463
[advisory](https://github.com/AcademySoftwareFoundation/OpenImageIO/security/advisories/GHSA-jjm9-9m4m-c8p2) (Fixed in 2.5.13.1)
5564
- CVE-2023-42295: Fix signed integer overflow when computing total number of pixels while reading BMP files. [#3948](https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/3948) (by xiaoxiaoafeifei) (Fixed in 2.5.3.0/2.6.0.1)

src/build-scripts/ci-build.bash

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ if [[ "$USE_SIMD" != "" ]] ; then
2525
OIIO_CMAKE_FLAGS="$OIIO_CMAKE_FLAGS -DUSE_SIMD=$USE_SIMD"
2626
fi
2727

28+
if [[ -n "${OIIO_PYTHON_BINDINGS_BACKEND:-}" ]] ; then
29+
OIIO_CMAKE_FLAGS="$OIIO_CMAKE_FLAGS -DOIIO_PYTHON_BINDINGS_BACKEND=${OIIO_PYTHON_BINDINGS_BACKEND}"
30+
fi
31+
2832
if [[ -n "$CODECOV" ]] ; then
2933
OIIO_CMAKE_FLAGS="$OIIO_CMAKE_FLAGS -DCODECOV=${CODECOV}"
3034
fi
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# CI-only: nanobind for CMake (`python -m nanobind --cmake_dir`). Used on Linux
2+
# (gh-installdeps) and Windows (gh-win-installdeps) with pip --require-hashes.
3+
# macOS CI uses `brew install nanobind` instead (install_homebrew_deps.bash).
4+
# When bumping pip pin: https://pypi.org/pypi/nanobind/<ver>/json → wheel sha256.
5+
nanobind==2.12.0 \
6+
--hash=sha256:a10d3d88e691dcdf22696f9acd893fda3c5a05635763aea238829d274fcad480

src/build-scripts/gh-installdeps.bash

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,5 +230,16 @@ fi
230230
df -h .
231231
df -h /host/root || true
232232

233+
# nanobind's CMake config is discovered via `python -m nanobind --cmake_dir`.
234+
# Version + wheel hash: src/build-scripts/ci-requirements-nanobind.txt (CodeQL / supply chain).
235+
if [[ "${OIIO_PYTHON_BINDINGS_BACKEND:-}" == "both" || "${OIIO_PYTHON_BINDINGS_BACKEND:-}" == "nanobind" ]] ; then
236+
_oiio_nanobind_requirements_file="$PWD/src/build-scripts/ci-requirements-nanobind.txt"
237+
if [[ "$ASWF_ORG" != "" ]] ; then
238+
time pip3 install -r "$_oiio_nanobind_requirements_file" --require-hashes || true
239+
else
240+
time pip3${PIP_SUFFIX} install -r "$_oiio_nanobind_requirements_file" --require-hashes
241+
fi
242+
fi
243+
233244
# Save the env for use by other stages
234245
src/build-scripts/save-env.bash

src/build-scripts/gh-win-installdeps.bash

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,11 @@ elif [[ "$PYTHON_VERSION" == "3.14" ]] ; then
3939
fi
4040
pip install numpy
4141

42+
if [[ "${OIIO_PYTHON_BINDINGS_BACKEND:-}" == "both" || "${OIIO_PYTHON_BINDINGS_BACKEND:-}" == "nanobind" ]] ; then
43+
_oiio_nanobind_requirements_file="$PWD/src/build-scripts/ci-requirements-nanobind.txt"
44+
"${Python_EXECUTABLE:-python}" -m pip install -r "$_oiio_nanobind_requirements_file" --require-hashes
45+
fi
46+
4247

4348
# In case we need vcpkg, example:
4449
# echo "All pre-installed VCPkg installs:"

src/build-scripts/install_homebrew_deps.bash

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,9 @@ if [[ "$OIIO_BREW_INSTALL_PACKAGES" == "" ]] ; then
5757
if [[ "${USE_QT:=1}" != "0" ]] && [[ "${INSTALL_QT:=1}" != "0" ]] ; then
5858
OIIO_BREW_INSTALL_PACKAGES+=" qt${QT_VERSION}"
5959
fi
60+
if [[ "${OIIO_PYTHON_BINDINGS_BACKEND:-}" == "both" || "${OIIO_PYTHON_BINDINGS_BACKEND:-}" == "nanobind" ]] ; then
61+
OIIO_BREW_INSTALL_PACKAGES+=" nanobind"
62+
fi
6063
fi
6164
brew install --display-times -q $OIIO_BREW_INSTALL_PACKAGES $OIIO_BREW_EXTRA_INSTALL_PACKAGES || true
6265

0 commit comments

Comments
 (0)