From 78ee80a6fdd4b787f71880f10e66d6b989c6e58d Mon Sep 17 00:00:00 2001 From: Daniel Garcia Moreno Date: Wed, 13 May 2026 11:14:41 +0200 Subject: [PATCH 1/2] PdfParser: Don't use list as def in read_prev_trailer It's not recommended to use the empty list as default value in functions or methods because Python interpreter evaluates during parsing, so it will be the same list for different calls. https://pylint.pycqa.org/en/latest/user_guide/messages/warning/dangerous-default-value.html --- src/PIL/PdfParser.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/PIL/PdfParser.py b/src/PIL/PdfParser.py index b0b32b1c9dd..40b7d2cc1e9 100644 --- a/src/PIL/PdfParser.py +++ b/src/PIL/PdfParser.py @@ -692,7 +692,7 @@ def read_trailer(self) -> None: self.read_prev_trailer(self.trailer_dict[b"Prev"]) def read_prev_trailer( - self, xref_section_offset: int, processed_offsets: list[int] = [] + self, xref_section_offset: int, processed_offsets: list[int] = None ) -> None: assert self.buf is not None trailer_offset = self.read_xref_table(xref_section_offset=xref_section_offset) @@ -708,6 +708,8 @@ def read_prev_trailer( ) trailer_dict = self.interpret_trailer(trailer_data) if b"Prev" in trailer_dict: + if processed_offsets is None: + processed_offsets = [] processed_offsets.append(xref_section_offset) check_format_condition( trailer_dict[b"Prev"] not in processed_offsets, "trailer loop found" From f0f67f8cf86e6fc049dec23996c41653a5fdd63f Mon Sep 17 00:00:00 2001 From: danigm Date: Wed, 13 May 2026 11:37:39 +0200 Subject: [PATCH 2/2] PdfParser: Fix typing in read_prev_trailer Co-authored-by: Andrew Murray <3112309+radarhere@users.noreply.github.com> --- src/PIL/PdfParser.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/PIL/PdfParser.py b/src/PIL/PdfParser.py index 40b7d2cc1e9..99ff2699977 100644 --- a/src/PIL/PdfParser.py +++ b/src/PIL/PdfParser.py @@ -692,7 +692,7 @@ def read_trailer(self) -> None: self.read_prev_trailer(self.trailer_dict[b"Prev"]) def read_prev_trailer( - self, xref_section_offset: int, processed_offsets: list[int] = None + self, xref_section_offset: int, processed_offsets: list[int] | None = None ) -> None: assert self.buf is not None trailer_offset = self.read_xref_table(xref_section_offset=xref_section_offset)