detect "Non-standard LZMA compressed Flash" (signature=ABC) files in DefineBinaryData tag

This commit is contained in:
honfika@gmail.com
2015-07-01 12:21:52 +02:00
parent e56d454090
commit 4eb9e54e51
2 changed files with 11 additions and 16 deletions

View File

@@ -300,6 +300,15 @@ public final class SWF implements SWFContainerItem, Timelined {
@Internal
private final Cache<ScriptPack, CachedDecompilation> as3Cache = Cache.getInstance(true, false, "as3");
public static List<String> swfSignatures = Arrays.asList(
"FWS", // Uncompressed Flash
"CWS", // ZLib compressed Flash
"ZWS", // LZMA compressed Flash
"GFX", // Uncompressed ScaleForm GFx
"CFX", // Compressed ScaleForm GFx
"ABC" // Non-standard LZMA compressed Flash
);
public void updateCharacters() {
characters = null;
}
@@ -1149,14 +1158,7 @@ public final class SWF implements SWFContainerItem, Timelined {
}
String signature = new String(hdr, 0, 3, Utf8Helper.charset);
if (!Arrays.asList(
"FWS", // Uncompressed Flash
"CWS", // ZLib compressed Flash
"ZWS", // LZMA compressed Flash
"GFX", // Uncompressed ScaleForm GFx
"CFX", // Compressed ScaleForm GFx
"ABC" // Non-standard LZMA compressed Flash
).contains(signature)) {
if (!swfSignatures.contains(signature)) {
throw new SwfOpenException("Invalid SWF file, wrong signature.");
}