mirror of
https://github.com/morluto/rea
synced 2026-10-26 14:25:49 -04:00
fix(il2cpp): preserve recognized truncated metadata prefixes
This commit is contained in:
@@ -4,13 +4,13 @@ import {
|
||||
Il2cppMetadataFormatFailure,
|
||||
} from "./Il2cppMetadataFormat.js";
|
||||
import {
|
||||
IL2CPP_METADATA_MAGIC,
|
||||
IL2CPP_METADATA_VERSIONS,
|
||||
il2cppMetadataSectionNames,
|
||||
type Il2cppMetadata,
|
||||
type Il2cppMetadataSection,
|
||||
type IL2cppMetadataSectionName,
|
||||
} from "../domain/il2cpp/il2cppMetadata.js";
|
||||
import { observeIl2cppMetadataHeaderPrefix } from "../domain/il2cpp/il2cppMetadataHeaderPrefix.js";
|
||||
import {
|
||||
readIl2cppMembers,
|
||||
readIl2cppMemberTables,
|
||||
@@ -129,13 +129,18 @@ const isIndexWidth = (value: number): value is IndexWidth =>
|
||||
value === 1 || value === 2 || value === 4;
|
||||
|
||||
const readHeader = (bytes: Buffer) => {
|
||||
const magic = bytes.length < 4 ? null : bytes.readUInt32LE(0);
|
||||
if (bytes.length < 8 || magic !== IL2CPP_METADATA_MAGIC)
|
||||
const prefix = observeIl2cppMetadataHeaderPrefix(bytes);
|
||||
if (prefix.kind !== "il2cpp")
|
||||
throw new Il2cppMetadataFormatFailure(
|
||||
"unrecognized-magic",
|
||||
"the file does not start with the IL2CPP global-metadata magic 0xFAB11BAF; encrypted or non-metadata inputs are not decoded",
|
||||
);
|
||||
const version = bytes.readInt32LE(4);
|
||||
if (prefix.version === null)
|
||||
throw new Il2cppMetadataFormatFailure(
|
||||
"truncated-header",
|
||||
`the file has ${bytes.length} bytes, fewer than the 8-byte magic/version prefix; the metadata version is unknown`,
|
||||
);
|
||||
const { magic, version } = prefix;
|
||||
if (!isSupportedVersion(version))
|
||||
throw new Il2cppMetadataFormatFailure(
|
||||
"unsupported-version",
|
||||
|
||||
Reference in New Issue
Block a user