From eb2b38790a157f4a4d3c9b86cf0b5122d717b74b Mon Sep 17 00:00:00 2001 From: weichslgartner Date: Mon, 13 Jun 2022 15:53:55 +0200 Subject: [PATCH] fixes undefined behavior in parse_canframe (lib.c:187) by chaning tmp to canid_t Issue: mkdir build && cd build CC=clang cmake -DCMAKE_C_FLAGS="-fsanitize=address,undefined" -DCMAKE_EXE_LINKER_FLAGS="-fsanitize=address,undefined" .. && cmake --build . echo "(0.0) can1 ffffffff#00000000" | ./log2long can-utils/lib.c:187:23: runtime error: left shift of 15 by 28 places cannot be represented in type 'int' SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /can-utils/lib.c:187:23 in (0.0) can1 3FFFFFFF --- lib.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib.c b/lib.c index 935270b..f0f099e 100644 --- a/lib.c +++ b/lib.c @@ -159,7 +159,7 @@ int parse_canframe(char *cs, struct canfd_frame *cf) { int i, idx, dlen, len; int maxdlen = CAN_MAX_DLEN; int ret = CAN_MTU; - unsigned char tmp; + canid_t tmp; len = strlen(cs); //printf("'%s' len %d\n", cs, len);