File cairo-CVE-2025-50422.patch of Package cairo.40158
From b57526185d60b3e36bb0f6684cc0ae9ac2294972 Mon Sep 17 00:00:00 2001 From: William Bader <william@newspapersystems.com> Date: Mon, 28 Apr 2025 05:01:45 +0200 Subject: [PATCH] Fix a NULL access in active_edges_to_traps(). The bentley-ottmann tessellation implementation uses an x of INT32_MAX as a sentinel. If a rectangle has an x of INT32_MAX, active_edges_to_traps() can read past the end of the edge list when building trapezoids. This patch reduces an x of INT32_MAX to INT32_MAX-1. This avoids the crash in https://gitlab.freedesktop.org/poppler/poppler/-/issues/1579 This is an alternative to the patch in https://gitlab.freedesktop.org/cairo/cairo/-/merge_requests/620 that adds a check for NULL pointers when traversing the edge list. --- src/cairo-bentley-ottmann-rectangular.c | 2 ++ 1 file changed, 2 insertions(+) --- a/src/cairo-bentley-ottmann-rectangular.c +++ b/src/cairo-bentley-ottmann-rectangular.c @@ -848,6 +848,8 @@ rectangles[j].left.dir = -1; } + if (rectangles[j].left.x == INT32_MAX) rectangles[j].left.x = INT32_MAX-1; + if (rectangles[j].right.x == INT32_MAX) rectangles[j].right.x = INT32_MAX-1; rectangles[j].left.right = NULL; rectangles[j].right.right = NULL;