> 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