Skip to content

fix(cineon): validate bit depth against libcineon's supported set#5283

Open
lgritz wants to merge 1 commit into
AcademySoftwareFoundation:mainfrom
lgritz:lg-cineonbitdepth
Open

fix(cineon): validate bit depth against libcineon's supported set#5283
lgritz wants to merge 1 commit into
AcademySoftwareFoundation:mainfrom
lgritz:lg-cineonbitdepth

Conversation

@lgritz

@lgritz lgritz commented Jul 1, 2026

Copy link
Copy Markdown
Collaborator

CineonInput::open() accepted any per-channel bit depth in [1,32], but libcineon's ComponentDataSize()/ComponentByteCount() only recognize {8,10,12,16,32,64} and assert(0) on anything else. A crafted file with an unsupported bit depth (e.g. 26) passed the OIIO-side check and then aborted deep inside the vendored library instead of failing cleanly.

Tighten the check to libcineon's actual whitelist so bogus bit depths are rejected with a proper errorfmt() before ever reaching the vendored code. Adds a regression fixture (broken_bitdepth2.cin) to the cineon testsuite.

Assisted-by: Claude Code / Sonnet 5

CineonInput::open() accepted any per-channel bit depth in [1,32], but
libcineon's ComponentDataSize()/ComponentByteCount() only recognize
{8,10,12,16,32,64} and assert(0) on anything else. A crafted file with
an unsupported bit depth (e.g. 26) passed the OIIO-side check and then
aborted deep inside the vendored library instead of failing cleanly.

Tighten the check to libcineon's actual whitelist so bogus bit depths
are rejected with a proper errorfmt() before ever reaching the vendored
code. Adds a regression fixture (broken_bitdepth2.cin) to the cineon
testsuite.

Assisted-by: Claude Code / Sonnet 5

Signed-off-by: Larry Gritz <lg@larrygritz.com>
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.

1 participant