Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.

Close

#51 SyncToUnitStart pathological condition

closed-fixed
nobody
5
2008-05-27
2008-04-17
soDark6
No

In Dirac version 0.9.1

When decoding I frames that are incomplete the module
ParseUnitByteIO::SyncToUnitStart can enter a loop condition from which it never returns.

It appears to be searching for 'BBCD' but never finds
it and never exits the loop. This occurs even though
BBCD is at the start of the frame.

It is possible to force this condition by sending a malformed frame of data to the parser (by dropping or adding a byte). The decoder returns the state STATE_BUFFER indicating it needs more data. When the
next I frame is received (starting BBCD) the decoder
does not recover and enters an endless loop.

Discussion

    • status: open --> closed-fixed
     
  • Logged In: YES
    user_id=692051
    Originator: NO

    Fixed ParseUnitByteIO member functions so that they dont' go into a permanent loop.
    Modified files are -

    parseunit_byteio.h - buggy revision 1.10 fixed revision 1.11
    parseunit_byteio.cpp - buggy revision 1.9 fixed revision 1.10
    dirac_byte_stream.h - buggy revision 1.2 fixed revision 1.3
    dirac_byte_stream.cpp - buggy revision 1.6 fixed revision 1.7