On Thu, 13 Feb 2025 01:08:04 GMT, Harshitha Onkar <hon...@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 <hon...@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

Reply via email to