> 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

Harshitha Onkar has updated the pull request incrementally with one additional 
commit since the last revision:

  added javadoc to testprofile

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/23606/files
  - new: https://git.openjdk.org/jdk/pull/23606/files/71a125c6..47c0129e

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=23606&range=22
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=23606&range=21-22

  Stats: 4 lines in 1 file changed: 4 ins; 0 del; 0 mod
  Patch: https://git.openjdk.org/jdk/pull/23606.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/23606/head:pull/23606

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

Reply via email to