On Wed, Jan 18, 2023 at 06:53:33PM +0000, Ferruh Yigit wrote: > On 1/18/2023 4:11 PM, Bruce Richardson wrote: > > When building the example without libbsd and using the DPDK-provided > > strlcpy function, a compiler warning is emitted by GCC 12 about the copy > > of the parsed string into the resulting object. This is because the > > source from cmdline library is 128 bytes and the destination buffer is > > 64-bytes. > > > > commands.c: In function 'cmd_obj_add_parsed': > > .../__BUILDS/build-x86-generic/install/usr/local/include/rte_string_fns.h:61:24: > > warning: '%s' directive output may be truncated writing up to 127 bytes > > into a region of size 64 [-Wformat-truncation=] > > 61 | return (size_t)snprintf(dst, size, "%s", src); > > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > In file included from /usr/include/stdio.h:894, > > from commands.c:7: > > /usr/include/x86_64-linux-gnu/bits/stdio2.h:71:10: note: > > '__builtin_snprintf' output between 1 and 128 bytes into a destination of > > size 64 > > > > Multiple options are possible to fix this, but the one taken in this > > patch is to ensure truncation never occurs by setting the destination > > buffer size to be the same as that used by the cmdline library. > > > > Fixes: af75078fece3 ("first public release") > > Cc: sta...@dpdk.org > > > > Signed-off-by: Bruce Richardson <bruce.richard...@intel.com> > > --- > > examples/cmdline/parse_obj_list.h | 3 ++- > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > > diff --git a/examples/cmdline/parse_obj_list.h > > b/examples/cmdline/parse_obj_list.h > > index 6516d3e2c2..1223ac1e8b 100644 > > --- a/examples/cmdline/parse_obj_list.h > > +++ b/examples/cmdline/parse_obj_list.h > > @@ -12,8 +12,9 @@ > > > > #include <sys/queue.h> > > #include <cmdline_parse.h> > > +#include <cmdline_parse_string.h> > > > > -#define OBJ_NAME_LEN_MAX 64 > > +#define OBJ_NAME_LEN_MAX sizeof(cmdline_fixed_string_t) > > > > struct object { > > SLIST_ENTRY(object) next; > > I confirm it solves the build warning, but what about to get rid of > `OBJ_NAME_LEN_MAX` completely if the intentions is to make size same as > cmdline library array: > Sure. Another potential fix is just to cast-away [(void)] the return value from strlcpy and allow truncation.
Olivier, as maintainer, what is your preferred fix here? /Bruce