diff --git a/src/share/native/sun/java2d/cmm/lcms/cmsio0.c b/src/share/native/sun/java2d/cmm/lcms/cmsio0.c index 82b9a6e6db41ff056007a5de5e9b86322e901f90..801041454546cdfcd66adfd8a9b52f01d9912bd8 100644 --- a/src/share/native/sun/java2d/cmm/lcms/cmsio0.c +++ b/src/share/native/sun/java2d/cmm/lcms/cmsio0.c @@ -1077,7 +1077,13 @@ cmsHPROFILE CMSEXPORT cmsOpenProfileFromMem(const void* MemPtr, cmsUInt32Number static cmsBool SanityCheck(_cmsICCPROFILE* profile) { - cmsIOHANDLER* io = profile->IOhandler; + cmsIOHANDLER* io; + + if (!profile) { + return FALSE; + } + + io = profile->IOhandler; if (!io) { return FALSE; } @@ -1108,8 +1114,6 @@ cmsBool SaveTags(_cmsICCPROFILE* Icc, _cmsICCPROFILE* FileOrig) cmsTagTypeSignature TypeBase; cmsTagTypeHandler* TypeHandler; - if (!SanityCheck(FileOrig)) return FALSE; - for (i=0; i < Icc -> TagCount; i++) { @@ -1126,7 +1130,7 @@ cmsBool SaveTags(_cmsICCPROFILE* Icc, _cmsICCPROFILE* FileOrig) // Reach here if we are copying a tag from a disk-based ICC profile which has not been modified by user. // In this case a blind copy of the block data is performed - if (FileOrig != NULL && Icc -> TagOffsets[i]) { + if (SanityCheck(FileOrig) && Icc -> TagOffsets[i]) { cmsUInt32Number TagSize = FileOrig -> TagSizes[i]; cmsUInt32Number TagOffset = FileOrig -> TagOffsets[i]; diff --git a/test/sun/java2d/cmm/ProfileOp/SetDataTest.java b/test/sun/java2d/cmm/ProfileOp/SetDataTest.java index e426820c3e3a08795f8788ed5ae6d525e5802fba..ece1a49d5b5fbc2ba7013a7bbcd0431c12d892ee 100644 --- a/test/sun/java2d/cmm/ProfileOp/SetDataTest.java +++ b/test/sun/java2d/cmm/ProfileOp/SetDataTest.java @@ -23,7 +23,7 @@ /** * @test - * @bug 7042594 + * @bug 7042594 8028206 * @summary Test verifies that ICC_Profile.setData() conforms the spec. * * @run main SetDataTest