ICC_Profile.setData(..) does validation of the specified tag contents and 
throws an exception if it is not valid. But if the tag represents the header, 
at least some of the validation is lazy, occurring only when the data is used, 
leading to unexpected exceptions at a later time. The check should be done 
up-front when the data is set, as in other cases.

 `verifyHeader(byte[] data)`is called when header data is being updated and the 
following fields are validated according to the ICC Spec Document. [[1] 
Pg#19](https://www.color.org/specification/ICC.1-2022-05.pdf). 

- Profile/Device class
- Color Space
- Rendering Intent
- PCS
- Header Size check (ICC Header Size = 128 bytes)

These validation checks are added to ICC_Profile.getInstance(..) & 
ICC_Profile.setData(..) methods.

Reference: [1] https://www.color.org/specification/ICC.1-2022-05.pdf

-------------

Commit messages:
 - test added
 - validation checks

Changes: https://git.openjdk.org/jdk/pull/23044/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=23044&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8347377
  Stats: 273 lines in 3 files changed: 268 ins; 2 del; 3 mod
  Patch: https://git.openjdk.org/jdk/pull/23044.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/23044/head:pull/23044

PR: https://git.openjdk.org/jdk/pull/23044

Reply via email to