Integrated: JDK-8346465 : Add a check in setData() to restrict the update of Built-In ICC_Profiles
Harshitha Onkar
honkar at openjdk.org
Thu Apr 10 19:58:42 UTC 2025
On Thu, 13 Feb 2025 01:08:04 GMT, Harshitha Onkar <honkar at openjdk.org> wrote:
> Built-in Profiles are singleton objects and if the user happens to modify this shared profile object via setData() then the modified version of the profile is returned each time the same built-in profile is requested via getInstance().
>
> It is good to protect Built-in profiles from such direct modification by adding BuiltIn profile check in `setData()` such that **only copies** of Built-In profiles are allowed to be updated.
>
> With the proposed fix, if Built-In profile is updated using `.setData()` it throws _**IAE - "BuiltIn profile cannot be modified"**_
>
> There are no restrictions on creating copies of BuiltIn profile and then modifying it, but what is being restricted with this fix is - the direct modification of the shared BuiltIn profile instance.
>
> Applications which need a modified version of the ICC Profile should instead do the following:
>
>
> byte[] profileData = ICC_Profile.getData() // get the byte array representation of BuiltIn- profile
> ICCProfile newProfile = ICC_Profile.getInstance(profileData) // create a new profile
> newProfile.setData() // to modify and customize the profile
>
>
> Following existing tests are modified to update a copy of Built-In profile.
>
> - java/awt/color/ICC_Profile/SetHeaderInfo.java
> - java/awt/color/ICC_ProfileSetNullDataTest.java
> - sun/java2d/cmm/ProfileOp/SetDataTest.java
This pull request has now been integrated.
Changeset: 3131dd1d
Author: Harshitha Onkar <honkar at openjdk.org>
URL: https://git.openjdk.org/jdk/commit/3131dd1d5cb601b84cf898fff589596c2bcabdbc
Stats: 233 lines in 7 files changed: 210 ins; 5 del; 18 mod
8346465: Add a check in setData() to restrict the update of Built-In ICC_Profiles
Reviewed-by: aivanov, jdv, prr, serb
-------------
PR: https://git.openjdk.org/jdk/pull/23606
More information about the client-libs-dev
mailing list