Skip to content

Commit bb548da

Browse files
committed
parse.js: Fix for changes in DT_BINDABLEPROPERTY
1 parent d570360 commit bb548da

1 file changed

Lines changed: 24 additions & 9 deletions

File tree

parse.js

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -890,40 +890,55 @@ let basicTypes = {
890890
ret.datastore = datastore;
891891
}
892892
offset += 16;
893+
results.readLength += 16;
893894

894895
// DT_CSTRING
895896
const property = readStructure.bind(this)(file, [3846829457], offset, field, [...fieldPath, "property"]);
896897
if (property) {
897898
ret.property = property;
898899
}
899900
offset += 16;
901+
results.readLength += 16;
902+
903+
904+
const unknown = file.readUInt32LE(offset);
905+
offset += 4;
906+
results.readLength += 4;
900907

901908

909+
const padding1 = file.readInt32LE(offset);
910+
offset += 4;
911+
results.readLength += 4;
912+
if (padding1) {
913+
console.error(' @', offset, 'DT_BINDABLEPROPERTY[', getType(typeHashes[1]).name, ']: Unexpected value in padding1:', padding1, padding1.toString(16), 'fieldPath:', fieldPath.slice(-3).join('.'), fieldPath[0]);
914+
}
915+
902916
const flags = file.readInt32LE(offset);
903917
if (flags & 0xffcd != 0) {
904918
//if (flags != 2 && flags != 16 && flags != 18 && flags != 32 && flags != 34 && flags != 50) {
905919
console.warn(' @', offset, 'DT_BINDABLEPROPERTY[', getType(typeHashes[1]).name, ']: Unexpected flag:', flags, 'next int:', file.readInt32LE(offset + 16), 'fieldPath:', fieldPath.slice(-3).join('.'));
906920
}
907921
offset += 4;
922+
results.readLength += 4;
908923

909-
const padding = file.readInt32LE(offset);
910-
if (padding != 0) {
911-
ret.__error__ = 'Error: DT_BINDABLEPROPERTY: Unexpected value in padding!';
912-
console.error(' @', offset, 'DT_BINDABLEPROPERTY[', getType(typeHashes[1]).name, ']: Unexpected value in padding:', padding, 'fieldPath:', fieldPath.slice(-3).join('.'));
924+
const padding2 = file.readInt32LE(offset);
925+
if (padding2 != 0) {
926+
ret.__error__ = 'Error: DT_BINDABLEPROPERTY: Unexpected value in padding2!';
927+
console.error(' @', offset, 'DT_BINDABLEPROPERTY[', getType(typeHashes[1]).name, ']: Unexpected value in padding2:', padding2, 'fieldPath:', fieldPath.slice(-3).join('.'));
913928
}
914929
offset += 4;
915-
results.readLength += 40;
930+
results.readLength += 4;
916931

917932
let subresults = { readLength: 0 };
918933
ret.value = readStructure.bind(this)(file, typeHashes.slice(1), offset, field, [...fieldPath, "value"], subresults);
919934
results.readLength += subresults.readLength;
920935

921936
offset += subresults.readLength;
922937
if (offset % 8) {
923-
const padding2 = file.readInt32LE(offset);
924-
if (padding2 != 0) {
925-
ret.__error__ = 'Error: DT_BINDABLEPROPERTY: Unexpected value in padding!';
926-
console.error(' @', offset, 'DT_BINDABLEPROPERTY[', getType(typeHashes[1]).name, ']: Unexpected value in padding2:', padding2, 'fieldPath:', fieldPath.slice(-3).join('.'));
938+
const padding3 = file.readInt32LE(offset);
939+
if (padding3 != 0) {
940+
ret.__error__ = 'Error: DT_BINDABLEPROPERTY: Unexpected value in padding3!';
941+
console.error(' @', offset, 'DT_BINDABLEPROPERTY[', getType(typeHashes[1]).name, ']: Unexpected value in padding3:', padding3, 'fieldPath:', fieldPath.slice(-3).join('.'));
927942
}
928943
results.readLength += 4;
929944
}

0 commit comments

Comments
 (0)