Fixed group traversal bug. Added ACHR flag "Unknown 30". All non-REFR flags checked.

This commit is contained in:
2022-09-05 15:29:29 +10:00
parent ea9eece708
commit 20d29ea721
2 changed files with 9 additions and 3 deletions

View File

@@ -77,7 +77,10 @@ const char *walk_unknown_data(const char *data, size_t size) {
const char *end = data + size;
while (data != end) {
assert(data < end);
if (data >= end) {
fflush(stdout);
assert(false);
}
const Type4 *type = (Type4 *)data;
@@ -101,9 +104,10 @@ const char *walk_group(const char *data) {
const char *const start = data + sizeof(Group);
const char *const end = data + header->size;
size_t size = header->size - sizeof(Group);
// walk through the groups/records inside the group
data = walk_unknown_data(start, header->size);
data = walk_unknown_data(start, size);
assert(data == end);
return data;
@@ -205,7 +209,8 @@ void print_record_flags(Record *const header) {
if (str) {
printf(" - %s\n", str);
flags -= ((uint32_t)1) << highest;
}
} else
break;
}
}
}