diff options
-rw-r--r-- | meta-oe/recipes-extended/canopenterm/canopenterm/0001-can_linux-initialize-msghdr-in-a-portable-way.patch | 42 | ||||
-rw-r--r-- | meta-oe/recipes-extended/canopenterm/canopenterm_1.0.8.bb | 4 |
2 files changed, 45 insertions, 1 deletions
diff --git a/meta-oe/recipes-extended/canopenterm/canopenterm/0001-can_linux-initialize-msghdr-in-a-portable-way.patch b/meta-oe/recipes-extended/canopenterm/canopenterm/0001-can_linux-initialize-msghdr-in-a-portable-way.patch new file mode 100644 index 0000000000..09bbd40215 --- /dev/null +++ b/meta-oe/recipes-extended/canopenterm/canopenterm/0001-can_linux-initialize-msghdr-in-a-portable-way.patch | |||
@@ -0,0 +1,42 @@ | |||
1 | From 464ed82087b0514694ab69e2808e859cb6f13833 Mon Sep 17 00:00:00 2001 | ||
2 | From: Khem Raj <raj.khem@gmail.com> | ||
3 | Date: Fri, 22 Nov 2024 10:35:12 -0800 | ||
4 | Subject: [PATCH] can_linux: initialize msghdr in a portable way | ||
5 | |||
6 | musl has padding bytes inside the msghdr struct which means initializing | ||
7 | full structure will cause wrong assignments, doing partial assignment is | ||
8 | more portable and assign the elements after that | ||
9 | |||
10 | Fixes | ||
11 | src/core/can_linux.c:362:71: error: incompatible pointer to integer conversion initializing 'int' with an expression of type 'void *' [-Wint-conversion] | ||
12 | | struct msghdr msg = { &sa, sizeof(sa), &iov, 1, NULL, 0, 0 }; | ||
13 | | ^~~~ | ||
14 | |||
15 | Upstream-Status: Submitted [https://github.com/CANopenTerm/CANopenTerm/pull/70] | ||
16 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
17 | --- | ||
18 | src/core/can_linux.c | 7 ++++++- | ||
19 | 1 file changed, 6 insertions(+), 1 deletion(-) | ||
20 | |||
21 | diff --git a/src/core/can_linux.c b/src/core/can_linux.c | ||
22 | index d8824be..b4e7907 100644 | ||
23 | --- a/src/core/can_linux.c | ||
24 | +++ b/src/core/can_linux.c | ||
25 | @@ -359,11 +359,16 @@ static char** get_can_interfaces(int* count) | ||
26 | int fd; | ||
27 | char buf[BUFFER_SIZE] = { 0 }; | ||
28 | struct iovec iov = { buf, sizeof(buf) }; | ||
29 | - struct msghdr msg = { &sa, sizeof(sa), &iov, 1, NULL, 0, 0 }; | ||
30 | + struct msghdr msg = { 0 }; | ||
31 | int len; | ||
32 | int max_interfaces = 10; | ||
33 | int can_count = 0; | ||
34 | char** can_interfaces = (char**)os_calloc(max_interfaces * sizeof(char*), sizeof(char)); | ||
35 | + | ||
36 | + msg.msg_name = &sa; | ||
37 | + msg.msg_namelen = sizeof(sa); | ||
38 | + msg.msg_iov = &iov; | ||
39 | + msg.msg_iovlen = 1; | ||
40 | |||
41 | struct | ||
42 | { | ||
diff --git a/meta-oe/recipes-extended/canopenterm/canopenterm_1.0.8.bb b/meta-oe/recipes-extended/canopenterm/canopenterm_1.0.8.bb index 191225bb15..c9bf0af560 100644 --- a/meta-oe/recipes-extended/canopenterm/canopenterm_1.0.8.bb +++ b/meta-oe/recipes-extended/canopenterm/canopenterm_1.0.8.bb | |||
@@ -15,7 +15,9 @@ LIC_FILES_CHKSUM = "file://LICENSE.md;md5=10e84ea70e8c3a1fbc462f5424806474" | |||
15 | 15 | ||
16 | DEPENDS = "libinih libsdl2 lua libsocketcan pocketpy" | 16 | DEPENDS = "libinih libsdl2 lua libsocketcan pocketpy" |
17 | 17 | ||
18 | SRC_URI = "git://github.com/CANopenTerm/CANopenTerm.git;protocol=https;branch=main" | 18 | SRC_URI = "git://github.com/CANopenTerm/CANopenTerm.git;protocol=https;branch=main \ |
19 | file://0001-can_linux-initialize-msghdr-in-a-portable-way.patch \ | ||
20 | " | ||
19 | SRCREV = "5bc04e09351f68e889381e1912b0445c4f18ee32" | 21 | SRCREV = "5bc04e09351f68e889381e1912b0445c4f18ee32" |
20 | 22 | ||
21 | S = "${WORKDIR}/git" | 23 | S = "${WORKDIR}/git" |