From 8a617aa9044cbe5731b32d79437bd6a9ffcf2602 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Mon, 7 May 2018 19:53:33 -0700 Subject: [PATCH] upm: musl and gcc8 fixes gcc8 detects that strncpy is overwiritng the null terminating character the source strings are already initialized to 0 so memcpy would do the same job Fixes rn2903.c:153:5: error: 'strncpy' output may be truncated copying 16 bytes from a string of length 511 [-Werror=stringop-truncation] strncpy(dev->hardware_eui, dev->resp_data, RN2903_MAX_HEX_EUI64); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include sys/types.h for uint definition uint is defined in sys/types.h, therefore this header needs to be included, it gets exposed with musl where this header is not getting included indirectly as it is happening when building on glibc Fixes build errors on musl e.g. upm/src/kx122/kx122.hpp:456:31: error: 'uint' has not been declared | void setBufferThreshold(uint samples); | ^~~~ Signed-off-by: Khem Raj --- src/ecezo/ecezo.c | 2 +- src/kx122/kx122.h | 1 + src/rn2903/rn2903.c | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/ecezo/ecezo.c b/src/ecezo/ecezo.c index 6a195fc1..55e95716 100644 --- a/src/ecezo/ecezo.c +++ b/src/ecezo/ecezo.c @@ -488,7 +488,7 @@ int ecezo_send_command(const ecezo_context dev, char *cmd, char *buffer, // our write buffer char writeBuffer[ECEZO_MAX_BUFFER_LEN]; - strncpy(writeBuffer, cmd, ECEZO_MAX_BUFFER_LEN); + memcpy(writeBuffer, cmd, ECEZO_MAX_BUFFER_LEN - 1); writeBuffer[ECEZO_MAX_BUFFER_LEN - 1] = 0; int writelen = strlen(writeBuffer); diff --git a/src/kx122/kx122.h b/src/kx122/kx122.h index 1622ed50..56e5215e 100644 --- a/src/kx122/kx122.h +++ b/src/kx122/kx122.h @@ -31,6 +31,7 @@ extern "C"{ #include #include #include +#include #include #include diff --git a/src/rn2903/rn2903.c b/src/rn2903/rn2903.c index f30a33ae..01a011da 100644 --- a/src/rn2903/rn2903.c +++ b/src/rn2903/rn2903.c @@ -150,7 +150,7 @@ static rn2903_context _rn2903_postinit(rn2903_context dev, rn2903_close(dev); return NULL; } - strncpy(dev->hardware_eui, dev->resp_data, RN2903_MAX_HEX_EUI64); + memcpy(dev->hardware_eui, dev->resp_data, RN2903_MAX_HEX_EUI64); return dev; }