diff options
Diffstat (limited to 'media-libs/lcms/files/lcms-2.6-cve-2014-0459.patch')
-rw-r--r-- | media-libs/lcms/files/lcms-2.6-cve-2014-0459.patch | 92 |
1 files changed, 0 insertions, 92 deletions
diff --git a/media-libs/lcms/files/lcms-2.6-cve-2014-0459.patch b/media-libs/lcms/files/lcms-2.6-cve-2014-0459.patch deleted file mode 100644 index aa1b17b24083..000000000000 --- a/media-libs/lcms/files/lcms-2.6-cve-2014-0459.patch +++ /dev/null @@ -1,92 +0,0 @@ -patch is directly taken from upstream at - https://github.com/mm2/Little-CMS/commit/74ba39195a0cf87c43f46a2fabd9c2168692822d -original version - http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/rev/d6739b8326a4 -cleaned from parts of an accidental commit of unrelated changes. - ---- a/src/cmscnvrt.c -+++ b/src/cmscnvrt.c -@@ -1045,7 +1045,7 @@ - if (TheIntents[i] == INTENT_PERCEPTUAL || TheIntents[i] == INTENT_SATURATION) { - - // Force BPC for V4 profiles in perceptual and saturation -- if (cmsGetProfileVersion(hProfiles[i]) >= 4.0) -+ if (cmsGetEncodedICCversion(hProfiles[i]) >= 0x4000000) - BPC[i] = TRUE; - } - } ---- a/src/cmsintrp.c -+++ b/src/cmsintrp.c -@@ -929,7 +929,7 @@ - - Rest = c1 * rx + c2 * ry + c3 * rz; - -- Tmp1[OutChan] = (cmsUInt16Number) c0 + ROUND_FIXED_TO_INT(_cmsToFixedDomain(Rest)); -+ Tmp1[OutChan] = (cmsUInt16Number) ( c0 + ROUND_FIXED_TO_INT(_cmsToFixedDomain(Rest))); - } - - -@@ -993,7 +993,7 @@ - - Rest = c1 * rx + c2 * ry + c3 * rz; - -- Tmp2[OutChan] = (cmsUInt16Number) c0 + ROUND_FIXED_TO_INT(_cmsToFixedDomain(Rest)); -+ Tmp2[OutChan] = (cmsUInt16Number) (c0 + ROUND_FIXED_TO_INT(_cmsToFixedDomain(Rest))); - } - - ---- a/src/cmsio0.c -+++ b/src/cmsio0.c -@@ -623,6 +623,32 @@ - } - - -+ -+// Enforces that the profile version is per. spec. -+// Operates on the big endian bytes from the profile. -+// Called before converting to platform endianness. -+// Byte 0 is BCD major version, so max 9. -+// Byte 1 is 2 BCD digits, one per nibble. -+// Reserved bytes 2 & 3 must be 0. -+static -+cmsUInt32Number _validatedVersion(cmsUInt32Number DWord) -+{ -+ cmsUInt8Number* pByte = (cmsUInt8Number*) &DWord; -+ cmsUInt8Number temp1; -+ cmsUInt8Number temp2; -+ -+ if (*pByte > 0x09) *pByte = (cmsUInt8Number) 0x09; -+ temp1 = *(pByte+1) & 0xf0; -+ temp2 = *(pByte+1) & 0x0f; -+ if (temp1 > 0x90) temp1 = 0x90; -+ if (temp2 > 0x09) temp2 = 0x09; -+ *(pByte+1) = (cmsUInt8Number)(temp1 | temp2); -+ *(pByte+2) = (cmsUInt8Number)0; -+ *(pByte+3) = (cmsUInt8Number)0; -+ -+ return DWord; -+} -+ - // Read profile header and validate it - cmsBool _cmsReadHeader(_cmsICCPROFILE* Icc) - { -@@ -657,7 +683,7 @@ - Icc -> creator = _cmsAdjustEndianess32(Header.creator); - - _cmsAdjustEndianess64(&Icc -> attributes, &Header.attributes); -- Icc -> Version = _cmsAdjustEndianess32(Header.version); -+ Icc -> Version = _cmsAdjustEndianess32(_validatedVersion(Header.version)); - - // Get size as reported in header - HeaderSize = _cmsAdjustEndianess32(Header.size); ---- a/src/cmsio1.c -+++ b/src/cmsio1.c -@@ -906,7 +906,7 @@ - { - if (!cmsWriteTag(hProfile, cmsSigProfileSequenceDescTag, seq)) return FALSE; - -- if (cmsGetProfileVersion(hProfile) >= 4.0) { -+ if (cmsGetEncodedICCversion(hProfile) >= 0x4000000) { - - if (!cmsWriteTag(hProfile, cmsSigProfileSequenceIdTag, seq)) return FALSE; - } |