On 02.10.2020 06:50, Jürgen Groß wrote: > On 01.10.20 18:38, Bertrand Marquis wrote: >> Hi Juergen, >> >>> On 14 Sep 2020, at 11:58, Bertrand Marquis <[email protected]> wrote: >>> >>> >>> >>>> On 12 Sep 2020, at 14:08, Juergen Gross <[email protected]> wrote: >>>> >>>> Making getBridge() static triggered a build error with some gcc versions: >>>> >>>> error: 'strncpy' output may be truncated copying 15 bytes from a string of >>>> length 255 [-Werror=stringop-truncation] >>>> >>>> Fix that by using a buffer with 256 bytes instead. >>>> >>>> Fixes: 6d0ec053907794 ("tools: split libxenstat into new tools/libs/stat >>>> directory") >>>> Signed-off-by: Juergen Gross <[email protected]> >>> Reviewed-by: Bertrand Marquis <[email protected]> >> >> Sorry i have to come back on this one. >> >> I still see an error compiling with Yocto on this one: >> | inlined from 'xenstat_collect_networks' at xenstat_linux.c:306:2: >> | xenstat_linux.c:81:6: error: 'strncpy' output may be truncated copying 255 >> bytes from a string of length 255 [-Werror=stringop-truncation] >> | 81 | strncpy(result, de->d_name, resultLen); >> | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> >> To solve it, I need to define devBridge[257] as devNoBrideg. > > IMHO this is a real compiler error. > > de->d_name is an array of 256 bytes, so doing strncpy() from that to > another array of 256 bytes with a length of 256 won't truncate anything.
That's a matter of how you look at it, I think: If the original array doesn't hold a nul-terminated string, the destination array won't either, yet the common goal of strncpy() is to yield a properly nul- terminated string. IOW the warning may be since the standard even has a specific foot note to point out this possible pitfall. Jan
