On 06.10.20 09:51, Bertrand Marquis wrote:
On 6 Oct 2020, at 05:34, Jürgen Groß <jgr...@suse.com> wrote:
On 05.10.20 18:02, Bertrand Marquis wrote:
Use memcpy in getBridge to prevent gcc warnings about truncated
strings. We know that we might truncate it, so the gcc warning
here is wrong.
Revert previous change changing buffer sizes as bigger buffers
are not needed.
Signed-off-by: Bertrand Marquis <bertrand.marq...@arm.com>
---
tools/libs/stat/xenstat_linux.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/tools/libs/stat/xenstat_linux.c b/tools/libs/stat/xenstat_linux.c
index d2ee6fda64..1db35c604c 100644
--- a/tools/libs/stat/xenstat_linux.c
+++ b/tools/libs/stat/xenstat_linux.c
@@ -78,7 +78,12 @@ static void getBridge(char *excludeName, char *result,
size_t resultLen)
sprintf(tmp, "/sys/class/net/%s/bridge",
de->d_name);
if (access(tmp, F_OK) == 0) {
- strncpy(result, de->d_name, resultLen);
+ /*
+ * Do not use strncpy to prevent
compiler warning with
+ * gcc >= 10.0
+ * If de->d_name is longer then
resultLen we truncate it
+ */
+ memcpy(result, de->d_name, resultLen -
1);
I think you want min(NAME_MAX, resultLen - 1) for the length.
true, I will fix that and send a v2.
Hmm, maybe you should use
min(strnlen(de->d_name, NAME_MAX), resultLen - 1)
for the case that de->d_name is near the end of a page, as otherwise
you could try to copy unallocated space.
Juergen