From ffff07bdd3c2f1981399a3fa89b68e9446c7f16a Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 26 Sep 2015 08:47:42 +0530 Subject: [PATCH] PDB Input: Ingore malformed metadata records. Fixes #1499878 [Plucker pdb files fail to load](https://bugs.launchpad.net/calibre/+bug/1499878) --- src/calibre/ebooks/metadata/plucker.py | 6 ++++-- src/calibre/ebooks/pdb/plucker/reader.py | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/calibre/ebooks/metadata/plucker.py b/src/calibre/ebooks/metadata/plucker.py index fabaa080d2..3f9513621d 100644 --- a/src/calibre/ebooks/metadata/plucker.py +++ b/src/calibre/ebooks/metadata/plucker.py @@ -44,8 +44,10 @@ def get_metadata(stream, extract_cover=True): author = None pubdate = 0 for i in xrange(record_count): - type, = struct.unpack('>H', section_data[2+adv:4+adv]) - length, = struct.unpack('>H', section_data[4+adv:6+adv]) + try: + type, length = struct.unpack_from('>HH', section_data, 2 + adv) + except struct.error: + break # CharSet if type == 1: diff --git a/src/calibre/ebooks/pdb/plucker/reader.py b/src/calibre/ebooks/pdb/plucker/reader.py index 0d2ca6983c..4bc2ed988a 100644 --- a/src/calibre/ebooks/pdb/plucker/reader.py +++ b/src/calibre/ebooks/pdb/plucker/reader.py @@ -199,8 +199,10 @@ class SectionMetadata(object): adv = 0 for i in xrange(record_count): - type, = struct.unpack('>H', raw[2+adv:4+adv]) - length, = struct.unpack('>H', raw[4+adv:6+adv]) + try: + type, length = struct.unpack_from('>HH', raw, 2 + adv) + except struct.error: + break # CharSet if type == 1: