summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'net-analyzer/zabbix/files/zabbix-6.4.6-clang16-build-fix.patch')
-rw-r--r--net-analyzer/zabbix/files/zabbix-6.4.6-clang16-build-fix.patch58
1 files changed, 58 insertions, 0 deletions
diff --git a/net-analyzer/zabbix/files/zabbix-6.4.6-clang16-build-fix.patch b/net-analyzer/zabbix/files/zabbix-6.4.6-clang16-build-fix.patch
new file mode 100644
index 000000000000..4160a42ee6eb
--- /dev/null
+++ b/net-analyzer/zabbix/files/zabbix-6.4.6-clang16-build-fix.patch
@@ -0,0 +1,58 @@
+https://github.com/zabbix/zabbix/pull/110
+From: Brahmajit Das <brahmajit.xyz@gmail.com>
+Date: Sun, 24 Sep 2023 14:40:05 +0000
+Subject: [PATCH] Fix incompatible pointer to integer conversion initializing
+
+Makes struct members explicit.
+
+First found on Gentoo linux, with MUSL LLVM profile. Most probably due
+to newer compilers (like Clang 16 and GCC 14) have turned various errors
+on by default and we get build errors such as:
+
+```
+net.c:115:79: error: incompatible pointer to integer conversion initializing 'int' with an expression of type 'void *' [-Wint-conversion]
+ struct msghdr s_msg = { (void *)&s_sa, sizeof(struct sockaddr_nl), s_io, 1, NULL, 0, 0};
+ ^~~~
+/usr/include/unistd.h:25:14: note: expanded from macro 'NULL'
+ ^~~~~~~~~~
+net.c:121:79: error: incompatible pointer to integer conversion initializing 'int' with an expression of type 'void *' [-Wint-conversion]
+ struct msghdr r_msg = { (void *)&r_sa, sizeof(struct sockaddr_nl), r_io, 1, NULL, 0, 0};
+ ^~~~
+/usr/include/unistd.h:25:14: note: expanded from macro 'NULL'
+```
+
+Bug: https://bugs.gentoo.org/897840
+Signed-off-by: Brahmajit Das <brahmajit.xyz@gmail.com>
+--- a/src/libs/zbxsysinfo/linux/net.c
++++ b/src/libs/zbxsysinfo/linux/net.c
+@@ -112,13 +112,25 @@ static int find_tcp_port_by_state_nl(unsigned short port, int state, int *found)
+
+ struct sockaddr_nl s_sa = { AF_NETLINK, 0, 0, 0 };
+ struct iovec s_io[1] = { { &request, sizeof(request) } };
+- struct msghdr s_msg = { (void *)&s_sa, sizeof(struct sockaddr_nl), s_io, 1, NULL, 0, 0};
++ struct msghdr s_msg = { .msg_name = (void *)&s_sa,
++ .msg_namelen = sizeof(struct sockaddr_nl),
++ .msg_iov = s_io,
++ .msg_iovlen = 1,
++ .msg_control = NULL,
++ .msg_controllen = 0,
++ .msg_flags = 0};
+
+ char buffer[BUFSIZ] = { 0 };
+
+ struct sockaddr_nl r_sa = { AF_NETLINK, 0, 0, 0 };
+ struct iovec r_io[1] = { { buffer, BUFSIZ } };
+- struct msghdr r_msg = { (void *)&r_sa, sizeof(struct sockaddr_nl), r_io, 1, NULL, 0, 0};
++ struct msghdr r_msg = { .msg_name = (void *)&r_sa,
++ .msg_namelen = sizeof(struct sockaddr_nl),
++ .msg_iov = r_io,
++ .msg_iovlen = 1,
++ .msg_control = NULL,
++ .msg_controllen = 0,
++ .msg_flags = 0};
+
+ struct nlmsghdr *r_hdr;
+
+--
+2.42.0
+