summaryrefslogtreecommitdiff
path: root/external/pdfium
diff options
context:
space:
mode:
Diffstat (limited to 'external/pdfium')
-rw-r--r--external/pdfium/UnpackedTarball_pdfium.mk3
-rw-r--r--external/pdfium/ubsan.patch19
2 files changed, 22 insertions, 0 deletions
diff --git a/external/pdfium/UnpackedTarball_pdfium.mk b/external/pdfium/UnpackedTarball_pdfium.mk
index 0cad0169e1b6..17ddd9bd1029 100644
--- a/external/pdfium/UnpackedTarball_pdfium.mk
+++ b/external/pdfium/UnpackedTarball_pdfium.mk
@@ -13,11 +13,14 @@ pdfium_patches += visibility.patch.1
pdfium_patches += msvc.patch.1
# To support macOS 10.9 baseline.
pdfium_patches += macos.patch.1
+pdfium_patches += ubsan.patch
$(eval $(call gb_UnpackedTarball_UnpackedTarball,pdfium))
$(eval $(call gb_UnpackedTarball_set_tarball,pdfium,$(PDFIUM_TARBALL)))
+$(eval $(call gb_UnpackedTarball_set_patchlevel,pdfium,0))
+
$(eval $(call gb_UnpackedTarball_add_patches,pdfium,\
$(foreach patch,$(pdfium_patches),external/pdfium/$(patch)) \
))
diff --git a/external/pdfium/ubsan.patch b/external/pdfium/ubsan.patch
new file mode 100644
index 000000000000..08864b3a63b9
--- /dev/null
+++ b/external/pdfium/ubsan.patch
@@ -0,0 +1,19 @@
+--- third_party/agg23/agg_rasterizer_scanline_aa.h
++++ third_party/agg23/agg_rasterizer_scanline_aa.h
+@@ -349,14 +349,14 @@
+ cover += cur_cell->cover;
+ }
+ if(area) {
+- alpha = calculate_alpha((cover << (poly_base_shift + 1)) - area, no_smooth);
++ alpha = calculate_alpha(int(unsigned(cover) << (poly_base_shift + 1)) - area, no_smooth);
+ if(alpha) {
+ sl.add_cell(x, alpha);
+ }
+ x++;
+ }
+ if(num_cells && cur_cell->x > x) {
+- alpha = calculate_alpha(cover << (poly_base_shift + 1), no_smooth);
++ alpha = calculate_alpha(unsigned(cover) << (poly_base_shift + 1), no_smooth);
+ if(alpha) {
+ sl.add_span(x, cur_cell->x - x, alpha);
+ }