hardbyte / hardbyte/python-can

Stacktrace on badly formed CAN_ErrorFrame (?)

Đang mở
#1,913 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
bug
Ngôn ngữ chính
Python
Star
1.6k
Fork
697
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

# Describe the bug

We have an MF4 file from Kvaser that causes the following stack trace when run:

Traceback (most recent call last):
File "load.py", line 43, in
sys.exit(main(args))
File "load.py", line 27, in main
for msg in can.LogReader(args.mf4_file):
File "/home/john/.pyenv/versions/3.8.20/lib/python3.8/heapq.py", line 373, in merge
value = next()
File "/home/john/tmp/keep_1y/python-can/can/io/mf4.py", line 410, in __iter__
kv["data"] = data["CAN_ErrorFrame.DataBytes"][i][
IndexError: invalid index to scalar variable.

The test code is essentially:

for msg in can.LogReader(mf4_file):
if msg.is_error_frame:
count["error"] += 1
else:
count["other"] += 1

I put some debug at site of the error (line 407 of `can/io/mf4.py`):

data_length=4
data["CAN_ErrorFrame.DataBytes"][i]=16777216

2^24?

# To Reproduce

I was unable to create a file with **python-can** with the error data.

# Expected behavior

No crash. :)

# Additional context

OS and version: Linux
Python version: 3.8.20
python-can version: 654a02ae 2024-11-28 | Changelog for v4.5.0 (#1897) (HEAD -> main, origin/main, origin/HEAD)
python-can interface/s (if applicable): None

Traceback and logs

If I make this hack it consumes the error frame:

diff --git a/can/io/mf4.py b/can/io/mf4.py
index 4f5336b4..099395b4 100644
--- a/can/io/mf4.py
+++ b/can/io/mf4.py
@@ -405,9 +405,9 @@ class MF4Reader(BinaryIOMessageReader):
and "CAN_ErrorFrame.DataBytes" in names
):
data_length = int(data["CAN_ErrorFrame.DataLength"][i])
- kv["data"] = data["CAN_ErrorFrame.DataBytes"][i][
+ kv["data"] = data["CAN_ErrorFrame.DataBytes"][i].tobytes()[
:data_length
- ].tobytes()
+ ]

yield Message(**kv)

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.