From 25fee582c184474db40edcdde6b5e5b6f1067078 Mon Sep 17 00:00:00 2001 From: Fabrice Fontaine Date: Sat, 30 Mar 2019 14:28:30 +0100 Subject: [PATCH] package/xenomai: fix build with gcc 8 Patch was wrongly removed in d0dcca4705aaae85ce4ef0dc637b95fd4e81b9b3 Fixes: - http://autobuild.buildroot.org/results/beac5f07c3b56596a6d9d5a1bcf29eb2837c4829 Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- ...ated-destination-buffer-with-strncpy.patch | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 package/xenomai/0001-demos-posix-prevent-unterminated-destination-buffer-with-strncpy.patch 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..cb2b1fee48 --- /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 +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 +Signed-off-by: Fabrice Fontaine +[Retrieved from: +https://gitlab.denx.de/Xenomai/xenomai/commit/cdc63fe259c70a8a5304aa07087650ebf4ee6b5d] +--- + 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 + #include + #include ++#include + + 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 + -- 2.30.2