[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v3 1/2] tools/libs/stat: use memcpy instead of strncpy in getBridge
Hi, Could this be reviewed so that gcc10 issues are fixed ? Thanks Bertrand > On 7 Oct 2020, at 14:57, Bertrand Marquis <bertrand.marquis@xxxxxxx> 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.marquis@xxxxxxx> > --- > Changes in v3: > Do a memset 0 on destination buffer and use MIN between string length > and resultLen - 1. > Changes in v2: > Use MIN between string length of de->d_name and resultLen to copy only > the minimum size required and prevent crossing to from an unallocated > space. > --- > tools/libs/stat/xenstat_linux.c | 13 ++++++++++--- > 1 file changed, 10 insertions(+), 3 deletions(-) > > diff --git a/tools/libs/stat/xenstat_linux.c b/tools/libs/stat/xenstat_linux.c > index d2ee6fda64..e0d242e1bc 100644 > --- a/tools/libs/stat/xenstat_linux.c > +++ b/tools/libs/stat/xenstat_linux.c > @@ -29,6 +29,7 @@ > #include <string.h> > #include <unistd.h> > #include <regex.h> > +#include <xen-tools/libs.h> > > #include "xenstat_priv.h" > > @@ -78,8 +79,14 @@ 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); > - result[resultLen - 1] = 0; > + /* > + * Do not use strncpy to prevent > compiler warning with > + * gcc >= 10.0 > + * If de->d_name is longer then > resultLen we truncate it > + */ > + memset(result, 0, resultLen); > + memcpy(result, de->d_name, > MIN(strnlen(de->d_name, > + > NAME_MAX),resultLen - 1)); > } > } > } > @@ -264,7 +271,7 @@ int xenstat_collect_networks(xenstat_node * node) > { > /* Helper variables for parseNetDevLine() function defined above */ > int i; > - char line[512] = { 0 }, iface[16] = { 0 }, devBridge[256] = { 0 }, > devNoBridge[257] = { 0 }; > + char line[512] = { 0 }, iface[16] = { 0 }, devBridge[16] = { 0 }, > devNoBridge[17] = { 0 }; > unsigned long long rxBytes, rxPackets, rxErrs, rxDrops, txBytes, > txPackets, txErrs, txDrops; > > struct priv_data *priv = get_priv_data(node->handle); > -- > 2.17.1 > >
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |