From b20feacdb56ddc3987d21bc31076775b2cce0095 Mon Sep 17 00:00:00 2001
From: Julian Oes <julian@oes.ch>
Date: Tue, 14 May 2019 14:23:53 +0200
Subject: [PATCH] drivers: fix -Wstringop-truncation

GCC 9 complained about stringop-truncation which is a cautionary message
to prevent using strncpy with non-null terminated strings.

We can fix this by copying one byte less than the destination size and
then manually adding the null termination, as we already do.
---
 src/drivers/distance_sensor/cm8jl65/cm8jl65.cpp   | 2 +-
 src/drivers/distance_sensor/pga460/pga460.cpp     | 2 +-
 src/drivers/distance_sensor/sf0x/sf0x.cpp         | 2 +-
 src/drivers/distance_sensor/tfmini/tfmini.cpp     | 2 +-
 src/drivers/distance_sensor/ulanding/ulanding.cpp | 2 +-
 src/drivers/gps/gps.cpp                           | 2 +-
 6 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/drivers/distance_sensor/cm8jl65/cm8jl65.cpp b/src/drivers/distance_sensor/cm8jl65/cm8jl65.cpp
index 1c61c93fbf..72ef311ff4 100644
--- a/src/drivers/distance_sensor/cm8jl65/cm8jl65.cpp
+++ b/src/drivers/distance_sensor/cm8jl65/cm8jl65.cpp
@@ -194,7 +194,7 @@ CM8JL65::CM8JL65(const char *port, uint8_t rotation) :
 	_comms_errors(perf_alloc(PC_COUNT, "cm8jl65_com_err"))
 {
 	/* store port name */
-	strncpy(_port, port, sizeof(_port));
+	strncpy(_port, port, sizeof(_port) - 1);
 	/* enforce null termination */
 	_port[sizeof(_port) - 1] = '\0';
 
diff --git a/src/drivers/distance_sensor/pga460/pga460.cpp b/src/drivers/distance_sensor/pga460/pga460.cpp
index 648ec8bde6..e9f30f1ae8 100644
--- a/src/drivers/distance_sensor/pga460/pga460.cpp
+++ b/src/drivers/distance_sensor/pga460/pga460.cpp
@@ -46,7 +46,7 @@ extern "C" __EXPORT int pga460_main(int argc, char *argv[]);
 PGA460::PGA460(const char *port)
 {
 	// Store port name.
-	strncpy(_port, port, sizeof(_port));
+	strncpy(_port, port, sizeof(_port) - 1);
 	// Enforce null termination.
 	_port[sizeof(_port) - 1] = '\0';
 }
diff --git a/src/drivers/distance_sensor/sf0x/sf0x.cpp b/src/drivers/distance_sensor/sf0x/sf0x.cpp
index 5260987979..3f7087c3ee 100644
--- a/src/drivers/distance_sensor/sf0x/sf0x.cpp
+++ b/src/drivers/distance_sensor/sf0x/sf0x.cpp
@@ -189,7 +189,7 @@ SF0X::SF0X(const char *port, uint8_t rotation) :
 	_comms_errors(perf_alloc(PC_COUNT, "sf0x_com_err"))
 {
 	/* store port name */
-	strncpy(_port, port, sizeof(_port));
+	strncpy(_port, port, sizeof(_port) - 1);
 	/* enforce null termination */
 	_port[sizeof(_port) - 1] = '\0';
 
diff --git a/src/drivers/distance_sensor/tfmini/tfmini.cpp b/src/drivers/distance_sensor/tfmini/tfmini.cpp
index e771c68041..d8be15767d 100644
--- a/src/drivers/distance_sensor/tfmini/tfmini.cpp
+++ b/src/drivers/distance_sensor/tfmini/tfmini.cpp
@@ -190,7 +190,7 @@ TFMINI::TFMINI(const char *port, uint8_t rotation) :
 	_comms_errors(perf_alloc(PC_COUNT, "tfmini_com_err"))
 {
 	/* store port name */
-	strncpy(_port, port, sizeof(_port));
+	strncpy(_port, port, sizeof(_port) - 1);
 	/* enforce null termination */
 	_port[sizeof(_port) - 1] = '\0';
 }
diff --git a/src/drivers/distance_sensor/ulanding/ulanding.cpp b/src/drivers/distance_sensor/ulanding/ulanding.cpp
index b22ce466cd..3d5465a86f 100644
--- a/src/drivers/distance_sensor/ulanding/ulanding.cpp
+++ b/src/drivers/distance_sensor/ulanding/ulanding.cpp
@@ -147,7 +147,7 @@ Radar::Radar(uint8_t rotation, const char *port) :
 
 {
 	/* store port name */
-	strncpy(_port, port, sizeof(_port));
+	strncpy(_port, port, sizeof(_port) - 1);
 	/* enforce null termination */
 	_port[sizeof(_port) - 1] = '\0';
 }
diff --git a/src/drivers/gps/gps.cpp b/src/drivers/gps/gps.cpp
index 746e5fd740..c04303f8a0 100644
--- a/src/drivers/gps/gps.cpp
+++ b/src/drivers/gps/gps.cpp
@@ -285,7 +285,7 @@ GPS::GPS(const char *path, gps_driver_mode_t mode, GPSHelper::Interface interfac
 	_instance(instance)
 {
 	/* store port name */
-	strncpy(_port, path, sizeof(_port));
+	strncpy(_port, path, sizeof(_port) - 1);
 	/* enforce null termination */
 	_port[sizeof(_port) - 1] = '\0';
 
-- 
GitLab