python-can icon indicating copy to clipboard operation
python-can copied to clipboard

can.BLFReader: Stuck printing "Unknown object header version (0)", cannot error handle.

Open hotbrakepads opened this issue 2 years ago • 2 comments

Describe the bug

When reading certain BLF files that may be corrupt, the can.BLFReader() function gets stuck with the terminal output continuously printing "Unknown object header version (0)". Because this does not raise an error flag, there is no way to get out of this loop using traditional error handling methods. It seems maybe modifying the following section of blf.py would prevent the script from getting stuck here.

                LOG.warning("Unknown object header version (%d)", header_version)
                pos = next_pos
                continue

To:

                raise BLFParseError("Unknown object header version (%d)", header_version) from None

To Reproduce

I am not sure what is wrong with the particular BLF file this is getting stuck in but I cannot share it unfortunately.

Expected behavior

If "Unknown Object header Version (0)" is encountered, raise an exception flag so that we can stop processing the faulted file.

Additional context

OS and version: Windows 10 Python version: 3.11.2 python-can version: 4.1.0

hotbrakepads avatar Apr 29 '23 16:04 hotbrakepads

Create a PR with your suggested changes and if you are lucky, @christiansandberg might take a look at it 👀

zariiii9003 avatar Apr 30 '23 19:04 zariiii9003

My thought behind it was that maybe there is just one or two of these occurrences in a file so maybe you don't want to bail out if the rest of the file is fine. But I guess it's more likely that either there are no unknown headers or the file will be completely unreadable anyway.

christiansandberg avatar Apr 30 '23 19:04 christiansandberg