RFR: 8358057: Update validation of ICC_Profile header data
Sergey Bylokhov
serb at openjdk.org
Fri May 30 00:06:04 UTC 2025
The [next PR](https://github.com/openjdk/jdk/pull/23044) introduces several new methods to the ICC_Profile class:
- getProfileClass(byte[])
- getColorSpaceType(byte[])
- getPCSType(byte[])
- checkRenderingIntent(byte[])
These new methods extract data directly from the provided byte array rather than relying on the profile instance. The first three methods essentially duplicate the existing ones (getProfileClass(), getColorSpaceType(), getPCSType()).
It is possible to update implementation:
- The existing methods getColorSpaceType() and getPCSType() could delegate to the new getColorSpaceType(byte[]) and getPCSType(byte[]) methods.
- The checkRenderingIntent(byte[]) method could be updated to report the actual invalid intent value when an error occurs
Tests:
- Old ValidateICCHeaderData test is update to verify the new output of the checkRenderingIntent
- New RenderingIntentStressTest test is added to check the next part of the icc_spec:
* ICC spec: only the least-significant 16 bits encode the rendering
* intent. The most significant 16 bits must be zero and can be ignored.
* See https://www.color.org/ICC1v42_2006-05.pdf, section 7.2.15.
@honkar-jdk please take a look.
Note: There is currently an inconsistency in the usage of `getData(icSigHead)` vs `getData(cmmProfile(), icSigHead)` throughout the codebase. I plan to address this separately.
-------------
Commit messages:
- Create RenderingIntentStressTest.java
- Update getColorSpaceType and getPCSType
- Update checkRenderingIntent
Changes: https://git.openjdk.org/jdk/pull/25519/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=25519&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8358057
Stats: 141 lines in 3 files changed: 112 ins; 12 del; 17 mod
Patch: https://git.openjdk.org/jdk/pull/25519.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/25519/head:pull/25519
PR: https://git.openjdk.org/jdk/pull/25519
More information about the client-libs-dev
mailing list