From d1ec4a2b9116156f53457d4aed1fa312f6259c26 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 15 Sep 2025 17:10:59 +0530 Subject: [PATCH] PDB Input: Ignore malformed ExceptioNCharSets headers in plucker files. Fixes #2123829 [PDB to EPUB conversion Python error](https://bugs.launchpad.net/calibre/+bug/2123829) The data from the header was unused anyway --- src/calibre/ebooks/pdb/plucker/reader.py | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/src/calibre/ebooks/pdb/plucker/reader.py b/src/calibre/ebooks/pdb/plucker/reader.py index a890419030..d1931057e8 100644 --- a/src/calibre/ebooks/pdb/plucker/reader.py +++ b/src/calibre/ebooks/pdb/plucker/reader.py @@ -189,7 +189,6 @@ class SectionMetadata: def __init__(self, raw): self.default_encoding = 'latin-1' - self.exceptional_uid_encodings = {} self.owner_id = None record_count, = struct.unpack('>H', raw[0:2]) @@ -207,12 +206,7 @@ class SectionMetadata: self.default_encoding = MIBNUM_TO_NAME.get(val, 'latin-1') # ExceptionalCharSets elif type == 2: - ii_adv = 0 - for ii in range(length // 2): - uid, = struct.unpack('>H', raw[6+adv+ii_adv:8+adv+ii_adv]) - mib, = struct.unpack('>H', raw[8+adv+ii_adv:10+adv+ii_adv]) - self.exceptional_uid_encodings[uid] = MIBNUM_TO_NAME.get(mib, 'latin-1') - ii_adv += 4 + pass # not handled # OwnerID elif type == 3: self.owner_id = struct.unpack('>I', raw[6+adv:10+adv]) @@ -297,7 +291,6 @@ class Reader(FormatReader): # list of sections. self.uid_section_number = OrderedDict() self.uid_text_secion_number = OrderedDict() - self.uid_text_secion_encoding = {} self.uid_image_section_number = {} self.uid_composite_image_section_number = {} self.metadata_section_number = None @@ -342,8 +335,6 @@ class Reader(FormatReader): # to make access easier. if self.metadata_section_number: mdata_section = self.sections[self.metadata_section_number][1] - for k, v in mdata_section.exceptional_uid_encodings.items(): - self.uid_text_secion_encoding[k] = v self.default_encoding = mdata_section.default_encoding self.owner_id = mdata_section.owner_id