aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDr. Lars Völker <lars.voelker@technica-engineering.de>2022-10-12 19:59:27 +0200
committerAndersBroman <a.broman58@gmail.com>2022-10-13 14:48:43 +0000
commit89a3c8679ce4a6254654b89e232e2ce054b52e10 (patch)
treeceb1c02b2376675fc476ab3e972d1648e21534d6
parent883bc6ef290eb98020601b8409bc125ee98c8dce (diff)
BLF: Fixing the interpretation of SRR and RTR
This fixes a bug in the canfdmessage64 encoding in BLF that leads to CAN-FD frames being interpreted as Remote Frames instead of correctly ignoring the SRR flag. Makes canfdmessage encoding more robust as well.
-rw-r--r--wiretap/blf.c15
1 files changed, 4 insertions, 11 deletions
diff --git a/wiretap/blf.c b/wiretap/blf.c
index 61ae4cd475..8f1cf0aa85 100644
--- a/wiretap/blf.c
+++ b/wiretap/blf.c
@@ -1202,7 +1202,7 @@ blf_read_canfdmessage(blf_params_t *params, int *err, gchar **err_info, gint64 b
canid = canheader.id;
- if ((canheader.flags & BLF_CANMESSAGE_FLAG_RTR) == BLF_CANMESSAGE_FLAG_RTR) {
+ if (!canfd && (canheader.flags & BLF_CANMESSAGE_FLAG_RTR) == BLF_CANMESSAGE_FLAG_RTR) {
canid |= CAN_RTR_FLAG;
payload_length_valid = 0;
}
@@ -1267,16 +1267,9 @@ blf_read_canfdmessage64(blf_params_t *params, int *err, gchar **err_info, gint64
canid = canheader.id;
- if ((canid & CAN_EFF_FLAG) == CAN_EFF_FLAG) {
- if ((canheader.flags & BLF_CANFDMESSAGE64_FLAG_SRR) == BLF_CANFDMESSAGE64_FLAG_SRR) {
- canid |= CAN_RTR_FLAG;
- payload_length_valid = 0;
- }
- } else {
- if ((canheader.flags & BLF_CANFDMESSAGE64_FLAG_REMOTE_FRAME) == BLF_CANFDMESSAGE64_FLAG_REMOTE_FRAME) {
- canid |= CAN_RTR_FLAG;
- payload_length_valid = 0;
- }
+ if (!canfd && (canheader.flags & BLF_CANFDMESSAGE64_FLAG_REMOTE_FRAME) == BLF_CANFDMESSAGE64_FLAG_REMOTE_FRAME) {
+ canid |= CAN_RTR_FLAG;
+ payload_length_valid = 0;
}
if (!blf_can_fill_buf_and_rec(params, err, err_info, canid, payload_length, payload_length_valid, data_start + sizeof(canheader), timestamp, canheader.channel)) {