From 39428fb4f09cebf73ed500eda9d4dfdca2270f4f Mon Sep 17 00:00:00 2001 From: Sebastian Schuberth Date: Mon, 16 Oct 2017 11:46:08 +0200 Subject: [PATCH] TrueTypeFont: Check for enough data to unpack Fixes https://github.com/euske/pdfminer/issues/96 and https://github.com/euske/pdfminer/issues/144. --- pdfminer/pdffont.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/pdfminer/pdffont.py b/pdfminer/pdffont.py index 2a1c5f3..99f7811 100644 --- a/pdfminer/pdffont.py +++ b/pdfminer/pdffont.py @@ -383,9 +383,15 @@ class TrueTypeFont(object): self.fp = fp self.tables = {} self.fonttype = fp.read(4) - (ntables, _1, _2, _3) = struct.unpack('>HHHH', fp.read(8)) + data_str = fp.read(8) + if len(data_str) != 8: + return + (ntables, _1, _2, _3) = struct.unpack('>HHHH', data_str) for _ in range(ntables): - (name, tsum, offset, length) = struct.unpack('>4sLLL', fp.read(16)) + data_str = fp.read(16) + if len(data_str) != 16: + return + (name, tsum, offset, length) = struct.unpack('>4sLLL', data_str) self.tables[name] = (offset, length) return