Skip to content

Commit 2cea27d

Browse files
allow only valid fd message lengths
1 parent e750caa commit 2cea27d

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

can/interfaces/socketcan/socketcan.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,8 @@ def build_can_frame(msg: Message) -> bytes:
238238

239239
data = bytes(msg.data).ljust(max_len, b"\x00")
240240

241-
return CAN_FRAME_HEADER_STRUCT.pack(can_id, len(msg.data), flags, msg.dlc) + data
241+
data_len = min(i for i in can.util.CAN_FD_DLC if i >= len(msg.data))
242+
return CAN_FRAME_HEADER_STRUCT.pack(can_id, data_len, flags, msg.dlc) + data
242243

243244

244245
def build_bcm_header(
@@ -321,6 +322,9 @@ def dissect_can_frame(frame: bytes) -> Tuple[int, int, int, bytes]:
321322
# Flags not valid in non-FD frames
322323
flags = 0
323324

325+
if data_len not in can.util.CAN_FD_DLC:
326+
data_len = min(i for i in can.util.CAN_FD_DLC if i >= data_len)
327+
324328
# Allow deprecated can frames with old struct
325329
if (
326330
data_len == constants.CAN_MAX_DLEN and

0 commit comments

Comments
 (0)