Do not QuickFloor on cmsintrp In this CL, the flag CMS_DONT_USE_FAST_FLOOR is set to true because quickfloor could cause heap-buffer-overflow due to flooring errors. In the testcase for the bug, Input[2] is a number very close but smaller than 1 such that quickfloor returned 1 (whereas Input[2] >= 1.0 was false). Bug: chromium:752725 Change-Id: Ibb1763aa120a600e86602f1a46c4cd6d0d6bebd5 Reviewed-on: https://pdfium-review.googlesource.com/11310 Reviewed-by: Tom Sepez <tsepez@chromium.org> Reviewed-by: dsinclair <dsinclair@chromium.org> Commit-Queue: Nicolás Peña <npm@chromium.org>
diff --git a/third_party/lcms/0028-do-not-quickfloor.patch b/third_party/lcms/0028-do-not-quickfloor.patch new file mode 100644 index 0000000..598917a --- /dev/null +++ b/third_party/lcms/0028-do-not-quickfloor.patch
@@ -0,0 +1,13 @@ +diff --git a/third_party/lcms/include/lcms2.h b/third_party/lcms/include/lcms2.h +index 739e6e1f8..c84a4fd93 100644 +--- a/third_party/lcms/include/lcms2.h ++++ b/third_party/lcms/include/lcms2.h +@@ -38,7 +38,7 @@ + // #define CMS_DONT_USE_INT64 1 + + // Uncomment this if your compiler doesn't work with fast floor function +-// #define CMS_DONT_USE_FAST_FLOOR 1 ++#define CMS_DONT_USE_FAST_FLOOR 1 + + // Uncomment this line if you want lcms to use the black point tag in profile, + // if commented, lcms will compute the black point by its own.
diff --git a/third_party/lcms/README.pdfium b/third_party/lcms/README.pdfium index 3167130..f8fe7e7 100644 --- a/third_party/lcms/README.pdfium +++ b/third_party/lcms/README.pdfium
@@ -39,3 +39,4 @@ 0025-upstream-direct-leak-Type_MPE_Read.patch: fix leak in cmstypes.c. 0026-more-unsupported-characters.patch: remove other unsupported characters. 0027-changes-from-beginning-of-time.patch: commented changes from initial commit. +0028-do-not-quickfloor.patch: flooring errors may cause heap-buffer-overflow.
diff --git a/third_party/lcms/include/lcms2.h b/third_party/lcms/include/lcms2.h index 739e6e1..c84a4fd 100644 --- a/third_party/lcms/include/lcms2.h +++ b/third_party/lcms/include/lcms2.h
@@ -38,7 +38,7 @@ // #define CMS_DONT_USE_INT64 1 // Uncomment this if your compiler doesn't work with fast floor function -// #define CMS_DONT_USE_FAST_FLOOR 1 +#define CMS_DONT_USE_FAST_FLOOR 1 // Uncomment this line if you want lcms to use the black point tag in profile, // if commented, lcms will compute the black point by its own.