From c26c3b27395a46f32079103b18f473ae79aabf05 Mon Sep 17 00:00:00 2001 From: Bill Currie Date: Thu, 5 May 2022 19:50:14 +0900 Subject: [PATCH] [mdl] Show bytes remaining if not enough for unpack It turns out Abyss of Pandemonium has a truncated mdl file causing buffer overruns. --- tools/misc/mdl.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tools/misc/mdl.py b/tools/misc/mdl.py index f9b6698c4..924cdb48d 100644 --- a/tools/misc/mdl.py +++ b/tools/misc/mdl.py @@ -29,7 +29,7 @@ for i in range(m[6]): k[2].append (model[:s]) model = model[s:] skins.append (k) -pprint (skins) +#pprint (skins) stverts = [] for i in range(m[9]): @@ -51,7 +51,11 @@ for i in range (m[11]): model = model[4:] if t==0: if m[1] == 6: - x = unpack ("3B B 3B B 16s", model[:24]) + try: + x = unpack ("3B B 3B B 16s", model[:24]) + except: + print(len(model)) + raise f = (t, ((x[:3], x[3]), (x[4:7], x[7]), x[8]), []) model = model[24:] else: