Project

General

Profile

Actions

Bug #676

open

PipeliningModule::LoadBank calling TIBlobModule::LoadSlot with too short a length

Added by Stephen Wood over 1 year ago. Updated over 1 year ago.

Status:
Resolved
Priority:
Normal
Assignee:
-
Target version:
-
Start date:
09/25/2022
Due date:
% Done:

100%

Estimated time:
Spent time:
Responsible:

Description

I don't know if this is an Analyzer decoder bug or if hcana's TIBlobModule needs to be written differently.

PipeliningModule::LoadBank in non multiblock uses FindIDWord to find the end of the bank by looking for a particular pattern. When it calls TIBlobModule::LoadSlot (from hcana) it sometimes returns a pointer to the end of the bank that is too early. One of the words in the TIBlobModule is the TI time which can be anything. So sometimes the TI time matches the pattern that FindIDWord is looking for.

A non-problematic bank looks like:

<uint32 data_type="0x1" tag="4" num="0">
0x85422301 0xff112001 0x4010002 0x223 0x8bee531b
0x8d400006 0xfd4f1110 0xfd4f1110
</uint32>

The 0xbee531b word is the TI time and 0x8d400006 is the trailer word pattern pattern that FindIdWord matches. (kBlockTrailer and slot 21).

A problematic bank looks like:

<uint32 data_type="0x1" tag="4" num="0">
0x85422401 0xff112001 0x4010002 0x224 0x8d6d1fbf
0x8d400006 0xfd4f1110 0xfd4f1110
</uint32>

Here 0x8d6d1fbf is the TI time, but it matches the pattern because FindIdWord only looks at the top 10 bits.

I can simply ignore the length that is sent to TIBlobModule::LoadSlot, but that seems unsatisfatory.

I suppose the same issue could be in FindEventsInBlock for fMultiBlockMode. If so, maybe not all the events in a block might be found if a payload word matches the block trailer.

Actions

Also available in: Atom PDF