Hi, Sorry for the late reply.
On Thu, Jan 19, 2023 at 08:59:10AM +0000, Bruce Richardson wrote: > 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? I think you solution is good enough, given it's a dummy example. Acked-by: Olivier Matz <olivier.m...@6wind.com> Ferruh's comment about getting rid of OBJ_NAME_LEN_MAX is right, however I think in this case we should allocate the string and store a pointer to this string instead of having a size limited buffer. Olivier