From aabca6d793a14e728260d08a75149343b56ff073 Mon Sep 17 00:00:00 2001 From: jvr Date: Sat, 25 Jan 2003 11:14:59 +0000 Subject: [PATCH] gracefully handle bogus stringOffset values (thanks to Anthony Fok) git-svn-id: svn://svn.code.sf.net/p/fonttools/code/trunk@387 4cde692c-a291-49d1-8350-778aa11640f8 --- Lib/fontTools/ttLib/tables/_n_a_m_e.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Lib/fontTools/ttLib/tables/_n_a_m_e.py b/Lib/fontTools/ttLib/tables/_n_a_m_e.py index 9f0f97b6f..65c02c7ad 100644 --- a/Lib/fontTools/ttLib/tables/_n_a_m_e.py +++ b/Lib/fontTools/ttLib/tables/_n_a_m_e.py @@ -14,11 +14,19 @@ nameRecordFormat = """ offset: H """ +nameRecordSize = sstruct.calcsize(nameRecordFormat) + + class table__n_a_m_e(DefaultTable.DefaultTable): def decompile(self, data, ttFont): format, n, stringoffset = struct.unpack(">HHH", data[:6]) - stringoffset = int(stringoffset) + expectedStringOffset = 6 + n * nameRecordSize + if stringoffset != expectedStringOffset: + # XXX we need a warn function + print "Warning: 'name' table stringoffset incorrect.", + print "Expected: %s; Actual: %s" % (expectedStringOffset, stringoffset) + stringoffset = expectedStringOffset stringData = data[stringoffset:] data = data[6:stringoffset] self.names = []