Control: tags -1 + fixed-upstream patch

Hi,

Upstream issue #1758 is still open, but upstream fixed the code on master
in this commit:

https://www.google.com/url?q=https://gitlab.freedesktop.org/poppler/poppler/-/commit/94c499fe&source=gmail&ust=1793769493640000&sa=E
"Fix shift overflow when a sampled function has 32-bit samples"
(2026-09-28, after 26.07.0)

--- a/poppler/Function.cc
+++ b/poppler/Function.cc
@@ -373,7 +373,8 @@
- bitMask = (1 << sampleBits) - 1;
+ // sampleBits can be 32, so shift a 64-bit value to avoid overflowing int
+ bitMask = static_cast<unsigned int>((1ULL << sampleBits) - 1);

It applies cleanly to poppler-26.07.0's Function.cc, and none of
26.07.0-3's debian/patches touch that file. I checked only that it
applies; I did not do a full poppler build.

On severity: sampleBits is limited to 1..32 just above. The only value
that reaches the undefined shift is 32, and the sampleBits == 32 case
reads the four bytes directly in its own branch, so bitMask is never
used there. The issue is therefore the undefined-behaviour shift itself,
as UBSan reports it; there is no memory-safety impact in this code path.
That may support no-dsa/unimportant for stable, with the one-line
cherry-pick for unstable.

Thanks!

Reply via email to