def makeInvalidPadding2(): header, directory, tableData = defaultSFNTTestData() # pad the tables and update their offsets entries = [(entry["offset"], entry) for entry in directory] for o, entry in sorted(entries): tag = entry["tag"] data = tableData[tag] tableData[tag] = padData(data) entry["offset"] += sfntDirectoryEntrySize # make a bogus table and insert it header["numTables"] += 1 data = "\01" * 15 tableData["zzzz"] = data offset = entry["offset"] + entry["length"] + calcPaddingLength(entry["length"]) directory.append( dict( tag="zzzz", offset=offset, length=15, checksum=calcTableChecksum("zzzz", data) ) ) # compile data = packSFNT(header, directory, tableData, applyPadding=False) return data
def makeInvalidPadding3(): header, directory, tableData = defaultSFNTTestData() # shift the offsets for every table after head entries = [(entry["offset"], entry) for entry in directory] assert sorted(entries)[0][1]["tag"] == "head" for o, entry in sorted(entries)[1:]: if entry["tag"] == "head": continue entry["offset"] += 4 # pad the tables for tag, data in tableData.items(): if tag == "head": tableData[tag] = padData(data) + ("\0" * 4) else: tableData[tag] = padData(data) # compile data = packSFNT(header, directory, tableData, applyPadding=False) return data
def makeInvalidPadding5(): header, directory, tableData = defaultSFNTTestData() # pad the tables for tag, data in tableData.items(): if tag == "head": assert calcPaddingLength(len(data)) tableData[tag] = data + ("\x01" * calcPaddingLength(len(data))) else: tableData[tag] = padData(data) # compile data = packSFNT(header, directory, tableData, applyPadding=False) return data
def makeInvalidPadding5(): header, directory, tableData = defaultSFNTTestData() # pad the tables for tag, data in tableData.items(): if tag == "head": assert calcPaddingLength(len(data)) tableData[tag] = data + ("\x01" * calcPaddingLength(len(data))) else: tableData[tag] = padData(data) # compile data = packSFNT(header, directory, tableData, applyPadding=False) return data
def makeInvalidPadding4(): header, directory, tableData = defaultSFNTTestData() entries = [(entry["offset"], entry) for entry in directory] # pad the tables for o, entry in sorted(entries): tag = entry["tag"] data = tableData[tag] tableData[tag] = padData(data) # add four bogus bytes to the last table entry = sorted(entries)[-1][1] tag = entry["tag"] tableData[tag] += "\0" * 4 # compile data = packSFNT(header, directory, tableData, applyPadding=False) return data
def makeInvalidPadding4(): header, directory, tableData = defaultSFNTTestData() entries = [(entry["offset"], entry) for entry in directory] # pad the tables for o, entry in sorted(entries): tag = entry["tag"] data = tableData[tag] tableData[tag] = padData(data) # add four bogus bytes to the last table entry = sorted(entries)[-1][1] tag = entry["tag"] tableData[tag] += "\0" * 4 # compile data = packSFNT(header, directory, tableData, applyPadding=False) return data
def makeInvalidPadding1(): header, directory, tableData = defaultSFNTTestData() # grab the head table, calculate the padding length # and shift the following tables headEntry = [entry for entry in directory if entry["tag"] == "head"][0] shift = calcPaddingLength(headEntry["length"]) assert shift entries = [(entry["offset"], entry) for entry in directory] assert sorted(entries)[0][1]["tag"] == "head" for o, entry in sorted(entries)[1:]: if entry["tag"] == "head": continue entry["offset"] -= shift # pad the tables for tag, data in tableData.items(): if tag == "head": continue tableData[tag] = padData(data) # compile data = packSFNT(header, directory, tableData, applyPadding=False) return data
def makeInvalidPadding2(): header, directory, tableData = defaultSFNTTestData() # pad the tables and update their offsets entries = [(entry["offset"], entry) for entry in directory] for o, entry in sorted(entries): tag = entry["tag"] data = tableData[tag] tableData[tag] = padData(data) entry["offset"] += sfntDirectoryEntrySize # make a bogus table and insert it header["numTables"] += 1 data = "\01" * 15 tableData["zzzz"] = data offset = entry["offset"] + entry["length"] + calcPaddingLength( entry["length"]) directory.append( dict(tag="zzzz", offset=offset, length=15, checksum=calcTableChecksum("zzzz", data))) # compile data = packSFNT(header, directory, tableData, applyPadding=False) return data