From: Sunil Kumar Kori <sk...@marvell.com> Sent: Tuesday, April 28, 2020 11:49 AM To: Phil Yang <phil.y...@arm.com>; jer...@marvell.com; dev@dpdk.org Cc: David Marchand <david.march...@redhat.com>; Ruifeng Wang <ruifeng.w...@arm.com>; Lijian Zhang <lijian.zh...@arm.com>; nd <n...@arm.com> Subject: [EXT] [PATCH] trace: fix build with gcc 10
Sent from Workspace ONE Boxer On 27-Apr-2020 10:18 PM, Phil Yang <mailto:phil.y...@arm.com> wrote: > > External Email > > ---------------------------------------------------------------------- > GCC 10 compiling output: > eal_common_trace_utils.c: In function 'eal_trace_dir_args_save': > eal_common_trace_utils.c:290:24: error: '__builtin___sprintf_chk' \ > may write a terminating nul past the end of the destination \ > [-Werror=format-overflow=] > 290 | sprintf(dir_path, "%s/", optarg); > | ^ > > Fixes: 8af866df8d8c ("trace: add trace directory configuration parameter") > Hello, there is one more thread going on regarding this. Please have a look on below patch. http://patches.dpdk.org/patch/69382/ Hi Sunil, Sorry, I didn’t notice that. Thanks for the link. I have two points: 1. Will this patch resolves both mentioned warnings/error in patch 69382 ? [Phil] Yes, this patch resolved the same issue mentioned by David in patch 69382. 2. David has suggested another way of doing it. Please check that too. [Phil] I think both David’s and my patches are correct. My patch can guarantee a correct ‘size’ information in snprinf(). It omits the memory allocation operation for the incorrect input arguments case. David’s suggestion resolves the potential directory copy fail issue and it saves some memory space in the normal case. But it needs to allocate memory in the incorrect input case. So, I think we can bind these two patches together? Thanks, Phil > Signed-off-by: Phil Yang <mailto:phil.y...@arm.com> > Reviewed-by: Lijian Zhang <mailto:lijian.zh...@arm.com> > Tested-by: Lijian Zhang <mailto:lijian.zh...@arm.com> > --- > lib/librte_eal/common/eal_common_trace_utils.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/lib/librte_eal/common/eal_common_trace_utils.c > b/lib/librte_eal/common/eal_common_trace_utils.c > index fce8892..c079642 100644 > --- a/lib/librte_eal/common/eal_common_trace_utils.c > +++ b/lib/librte_eal/common/eal_common_trace_utils.c > @@ -276,7 +276,10 @@ eal_trace_dir_args_save(char const *optarg) > return -EINVAL; > } > > - if (strlen(optarg) >= size) { > + /* the specified trace directory name cannot > + * exceed PATH_MAX-1. > + */ > + if (strlen(optarg) >= (size - 1)) { > trace_err("input string is too big"); > return -ENAMETOOLONG; > } > -- > 2.7.4 >