> 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 with a new target base due to a 
merge or a rebase. The incremental webrev excludes the unrelated changes 
brought in by the merge/rebase. The pull request contains 21 additional commits 
since the last revision:

 - Merge branch 'master' into BuiltInCheck
 - updated test to check for all builtIn profiles, serial-deserialization
 - redudant stmt removed
 - modifier order changed, added comment to BuiltInProfile
 - review changes
 - builtIn converted to transient, tests updated
 - minor
 - review changes
 - doc update
 - builtIn flag moved to constructor
 - ... and 11 more: https://git.openjdk.org/jdk/compare/eb9e77c9...7da4c5c7

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/23606/files
  - new: https://git.openjdk.org/jdk/pull/23606/files/05d0783d..7da4c5c7

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

  Stats: 110998 lines in 2415 files changed: 54862 ins; 37818 del; 18318 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