diff options
author | ochang <ochang@chromium.org> | 2016-06-03 10:27:22 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-06-03 10:27:22 -0700 |
commit | 79d798da0d4b5f9f1fc27917102bdd7bcfbe863e (patch) | |
tree | 1dbe48815570b99701275ff8848daf1a0966af5f /third_party | |
parent | 8f3074bef53ed941daef3f32981b1449db7bcc26 (diff) | |
download | pdfium-79d798da0d4b5f9f1fc27917102bdd7bcfbe863e.tar.xz |
LCMS: Update FROM_16_TO_8 macro not to raise UBSan error
Cherry-picked from upstream commit 6da55e0b51124b795b707d318c0e03252222ba06
BUG=chromium:616253
Review-Url: https://codereview.chromium.org/2034123003
Diffstat (limited to 'third_party')
-rw-r--r-- | third_party/lcms2-2.6/0001-from16-to-8-overflow.patch | 13 | ||||
-rw-r--r-- | third_party/lcms2-2.6/README.pdfium | 1 | ||||
-rw-r--r-- | third_party/lcms2-2.6/src/lcms2_internal.h | 2 |
3 files changed, 15 insertions, 1 deletions
diff --git a/third_party/lcms2-2.6/0001-from16-to-8-overflow.patch b/third_party/lcms2-2.6/0001-from16-to-8-overflow.patch new file mode 100644 index 0000000000..6e7b16d061 --- /dev/null +++ b/third_party/lcms2-2.6/0001-from16-to-8-overflow.patch @@ -0,0 +1,13 @@ +diff --git a/third_party/lcms2-2.6/src/lcms2_internal.h b/third_party/lcms2-2.6/src/lcms2_internal.h +index 8617e92..cc76d48 100644 +--- a/third_party/lcms2-2.6/src/lcms2_internal.h ++++ b/third_party/lcms2-2.6/src/lcms2_internal.h +@@ -94,7 +94,7 @@ + + // A fast way to convert from/to 16 <-> 8 bits + #define FROM_8_TO_16(rgb) (cmsUInt16Number) ((((cmsUInt16Number) (rgb)) << 8)|(rgb)) +-#define FROM_16_TO_8(rgb) (cmsUInt8Number) ((((rgb) * 65281 + 8388608) >> 24) & 0xFF) ++#define FROM_16_TO_8(rgb) (cmsUInt8Number) ((((cmsUInt32Number)(rgb) * 65281U + 8388608U) >> 24) & 0xFFU) + + // Code analysis is broken on asserts + #ifdef _MSC_VER diff --git a/third_party/lcms2-2.6/README.pdfium b/third_party/lcms2-2.6/README.pdfium index 19d2f68604..6c3d5dd4ef 100644 --- a/third_party/lcms2-2.6/README.pdfium +++ b/third_party/lcms2-2.6/README.pdfium @@ -10,4 +10,5 @@ Color Management Engine. Local Modifications: 0000-tag-type-confusion.patch: Fix a type confusion. +0001-from16-to-8-overflow.patch: Prevent a UBSan warning. TODO(ochang): List other patches. diff --git a/third_party/lcms2-2.6/src/lcms2_internal.h b/third_party/lcms2-2.6/src/lcms2_internal.h index 8617e92eb1..cc76d488d0 100644 --- a/third_party/lcms2-2.6/src/lcms2_internal.h +++ b/third_party/lcms2-2.6/src/lcms2_internal.h @@ -94,7 +94,7 @@ // A fast way to convert from/to 16 <-> 8 bits #define FROM_8_TO_16(rgb) (cmsUInt16Number) ((((cmsUInt16Number) (rgb)) << 8)|(rgb)) -#define FROM_16_TO_8(rgb) (cmsUInt8Number) ((((rgb) * 65281 + 8388608) >> 24) & 0xFF) +#define FROM_16_TO_8(rgb) (cmsUInt8Number) ((((cmsUInt32Number)(rgb) * 65281U + 8388608U) >> 24) & 0xFFU) // Code analysis is broken on asserts #ifdef _MSC_VER |