trace: fix build with gcc 10
Prevent from writing beyond the allocated memory. 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") Signed-off-by: Phil Yang <phil.yang@arm.com> Reviewed-by: Lijian Zhang <lijian.zhang@arm.com> Tested-by: Lijian Zhang <lijian.zhang@arm.com> Acked-by: Sunil Kumar Kori <skori@marvell.com> Signed-off-by: David Marchand <david.marchand@redhat.com>
This commit is contained in:
parent
3df4282917
commit
b2f8a22e79
@ -245,22 +245,19 @@ int
|
||||
eal_trace_dir_args_save(char const *val)
|
||||
{
|
||||
struct trace *trace = trace_obj_get();
|
||||
uint32_t size = sizeof(trace->dir);
|
||||
char *dir_path = NULL;
|
||||
char *dir_path;
|
||||
int rc;
|
||||
|
||||
if (strlen(val) >= size) {
|
||||
if (strlen(val) >= sizeof(trace->dir) - 1) {
|
||||
trace_err("input string is too big");
|
||||
return -ENAMETOOLONG;
|
||||
}
|
||||
|
||||
dir_path = (char *)calloc(1, size);
|
||||
if (dir_path == NULL) {
|
||||
trace_err("fail to allocate memory");
|
||||
if (asprintf(&dir_path, "%s/", val) == -1) {
|
||||
trace_err("failed to copy directory: %s", strerror(errno));
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
sprintf(dir_path, "%s/", val);
|
||||
rc = trace_dir_update(dir_path);
|
||||
|
||||
free(dir_path);
|
||||
|
Loading…
x
Reference in New Issue
Block a user