diff --git a/espReader/Derived.c b/espReader/Derived.c index 3b491f5..775d29b 100644 --- a/espReader/Derived.c +++ b/espReader/Derived.c @@ -186,6 +186,7 @@ rfs_inner _achr = { [11] = "Initially Disabled", [25] = "No AI Acquire", [29] = "Don't Havok Settle", + [30] = "ACHR Unknown 30", }; rfs_inner _acti = { diff --git a/espReader/Reader.c b/espReader/Reader.c index 925397e..4f45bb6 100644 --- a/espReader/Reader.c +++ b/espReader/Reader.c @@ -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; } } }