From 1405a90e8b71cf0677d26eb78ed267d2500c15ff Mon Sep 17 00:00:00 2001 From: Marc Kleine-Budde Date: Wed, 29 May 2024 14:26:40 +0200 Subject: [PATCH] j1939spy: main(): fix shift-count-overflow error Fix the following error, by converting recvflags into a 64 bit type. | /home/j1939spy.c: In function 'main': | /home/j1939spy.c:248:36: error: left shift count >= width of type [-Werror=shift-count-overflow] | 248 | if (recvflags & (1 << SCM_TIMESTAMP)) { | | ^~ --- j1939spy.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/j1939spy.c b/j1939spy.c index 2d751d3..dc260da 100644 --- a/j1939spy.c +++ b/j1939spy.c @@ -99,7 +99,7 @@ int main(int argc, char **argv) int filter = 0; uint8_t priority, dst_addr; uint64_t dst_name; - long recvflags; + uint64_t recvflags; /* argument parsing */ while ((opt = getopt_long(argc, argv, optstring, long_opts, NULL)) != -1) @@ -230,11 +230,11 @@ int main(int argc, char **argv) case SOL_SOCKET: if (cmsg->cmsg_type == SCM_TIMESTAMP) { memcpy(&tdut, CMSG_DATA(cmsg), sizeof(tdut)); - recvflags |= 1 << cmsg->cmsg_type; + recvflags |= 1ULL << cmsg->cmsg_type; } break; case SOL_CAN_J1939: - recvflags |= 1 << cmsg->cmsg_type; + recvflags |= 1ULL << cmsg->cmsg_type; if (cmsg->cmsg_type == SCM_J1939_DEST_ADDR) dst_addr = *CMSG_DATA(cmsg); else if (cmsg->cmsg_type == SCM_J1939_DEST_NAME) @@ -245,7 +245,7 @@ int main(int argc, char **argv) } } - if (recvflags & (1 << SCM_TIMESTAMP)) { + if (recvflags & (1ULL << SCM_TIMESTAMP)) { if ('z' == s.time) { if (!tref.tv_sec) tref = tdut; @@ -270,9 +270,9 @@ abs_time: } } printf(" %s ", libj1939_addr2str(&src)); - if (recvflags & (1 << SCM_J1939_DEST_NAME)) + if (recvflags & (1ULL << SCM_J1939_DEST_NAME)) printf("%016llx ", (unsigned long long)dst_name); - else if (recvflags & (1 << SCM_J1939_DEST_ADDR)) + else if (recvflags & (1ULL << SCM_J1939_DEST_ADDR)) printf("%02x ", dst_addr); else printf("- ");