summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFabrice Fontaine <fontaine.fabrice@gmail.com>2019-02-16 22:44:56 +0100
committerThomas Petazzoni <thomas.petazzoni@bootlin.com>2019-02-17 15:57:57 +0100
commit85b3d8006be61ba9540cbd684c6d961544e35366 (patch)
tree8d5cb36922e9d00ebfb329a1c37b2ca3ca0fa52c
parented5aa81b5156fefcf948c1412c3ae3d4f7595fb8 (diff)
downloadbuildroot-85b3d8006be61ba9540cbd684c6d961544e35366.tar.gz
buildroot-85b3d8006be61ba9540cbd684c6d961544e35366.zip
package/xenomai: fix build with gcc 8
Fixes: - http://autobuild.buildroot.org/results/3a53f54476828ee878602da9adddf1e1e70f7a69 Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
-rw-r--r--package/xenomai/0001-demos-posix-prevent-unterminated-destination-buffer-with-strncpy.patch91
1 files changed, 91 insertions, 0 deletions
diff --git a/package/xenomai/0001-demos-posix-prevent-unterminated-destination-buffer-with-strncpy.patch b/package/xenomai/0001-demos-posix-prevent-unterminated-destination-buffer-with-strncpy.patch
new file mode 100644
index 0000000000..f91a31daaf
--- /dev/null
+++ b/package/xenomai/0001-demos-posix-prevent-unterminated-destination-buffer-with-strncpy.patch
@@ -0,0 +1,91 @@
+From cdc63fe259c70a8a5304aa07087650ebf4ee6b5d Mon Sep 17 00:00:00 2001
+From: Philippe Gerum <rpm@xenomai.org>
+Date: Wed, 24 Oct 2018 11:28:49 +0200
+Subject: [PATCH] demos/posix: prevent unterminated destination buffer with
+ strncpy()
+
+GCC 8.x introduced -Wstringop-truncation to help detecting likely
+unwanted outcomes of strncpy(dst, src, n), such as omitting the NUL
+character into the destination buffer whenever n < sizeof(src).
+
+Fix unsafe strncpy() calls when we do expect a null-terminated
+destination buffer.
+
+Signed-off-by: Philippe Gerum <rpm@xenomai.org>
+[Retrieved from
+https://gitlab.denx.de/Xenomai/xenomai/commit/cdc63fe259c70a8a5304aa07087650ebf4ee6b5d]
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+---
+ demo/posix/cobalt/can-rtt.c | 4 ++--
+ demo/posix/cobalt/eth_p_all.c | 3 ++-
+ demo/posix/cyclictest/cyclictest.c | 4 ++--
+ 3 files changed, 6 insertions(+), 5 deletions(-)
+
+diff --git a/demo/posix/cobalt/can-rtt.c b/demo/posix/cobalt/can-rtt.c
+index 61cad05e5..dd212d804 100644
+--- a/demo/posix/cobalt/can-rtt.c
++++ b/demo/posix/cobalt/can-rtt.c
+@@ -248,7 +248,7 @@ int main(int argc, char *argv[])
+ return -1;
+ }
+
+- strncpy(ifr.ifr_name, rxdev, IFNAMSIZ);
++ namecpy(ifr.ifr_name, rxdev);
+ printf("RX rxsock=%d, ifr_name=%s\n", rxsock, ifr.ifr_name);
+
+ if (ioctl(rxsock, SIOCGIFINDEX, &ifr) < 0) {
+@@ -282,7 +282,7 @@ int main(int argc, char *argv[])
+ goto failure1;
+ }
+
+- strncpy(ifr.ifr_name, txdev, IFNAMSIZ);
++ namecpy(ifr.ifr_name, txdev);
+ printf("TX txsock=%d, ifr_name=%s\n", txsock, ifr.ifr_name);
+
+ if (ioctl(txsock, SIOCGIFINDEX, &ifr) < 0) {
+diff --git a/demo/posix/cobalt/eth_p_all.c b/demo/posix/cobalt/eth_p_all.c
+index 6ac12ab3e..91aef9fbd 100644
+--- a/demo/posix/cobalt/eth_p_all.c
++++ b/demo/posix/cobalt/eth_p_all.c
+@@ -40,6 +40,7 @@
+ #include <net/if.h>
+ #include <arpa/inet.h>
+ #include <netinet/ether.h>
++#include <boilerplate/ancillaries.h>
+
+ char buffer[10*1024];
+ int sock;
+@@ -72,7 +73,7 @@ int main(int argc, char *argv[])
+ if (argc > 1) {
+ struct ifreq ifr;
+
+- strncpy(ifr.ifr_name, argv[1], IFNAMSIZ);
++ namecpy(ifr.ifr_name, argv[1]);
+ if (ioctl(sock, SIOCGIFINDEX, &ifr) < 0) {
+ perror("cannot get interface index");
+ close(sock);
+diff --git a/demo/posix/cyclictest/cyclictest.c b/demo/posix/cyclictest/cyclictest.c
+index ebe5461db..76983bd02 100644
+--- a/demo/posix/cyclictest/cyclictest.c
++++ b/demo/posix/cyclictest/cyclictest.c
+@@ -1353,7 +1353,7 @@ static void process_options (int argc, char *argv[], int max_cpus)
+ case 'F':
+ case OPT_FIFO:
+ use_fifo = 1;
+- strncpy(fifopath, optarg, strlen(optarg));
++ strncpy(fifopath, optarg, sizeof(fifopath) - 1);
+ break;
+
+ case 'H':
+@@ -1458,7 +1458,7 @@ static void process_options (int argc, char *argv[], int max_cpus)
+ case 'T':
+ case OPT_TRACER:
+ tracetype = CUSTOM;
+- strncpy(tracer, optarg, sizeof(tracer));
++ strncpy(tracer, optarg, sizeof(tracer) - 1);
+ break;
+ case 'u':
+ case OPT_UNBUFFERED:
+--
+2.18.1
+
OpenPOWER on IntegriCloud