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: