[v2,3/4] trace: fix metadata dump
Checks
Commit Message
The ctf metadata is written to the metadata file without any check for
length, so this string must be null terminated.
Fixes: f1a099f5b1f1 ("trace: create CTF TDSL metadata in memory")
Signed-off-by: David Marchand <david.marchand@redhat.com>
---
lib/librte_eal/common/eal_common_trace_ctf.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
Comments
>-----Original Message-----
>From: David Marchand <david.marchand@redhat.com>
>Sent: Thursday, October 29, 2020 2:33 AM
>To: dev@dpdk.org
>Cc: Jerin Jacob Kollanukkaran <jerinj@marvell.com>; Sunil Kumar Kori
><skori@marvell.com>
>Subject: [EXT] [PATCH v2 3/4] trace: fix metadata dump
>
>External Email
>
>----------------------------------------------------------------------
>The ctf metadata is written to the metadata file without any check for length,
>so this string must be null terminated.
>
>Fixes: f1a099f5b1f1 ("trace: create CTF TDSL metadata in memory")
>
>Signed-off-by: David Marchand <david.marchand@redhat.com>
>---
> lib/librte_eal/common/eal_common_trace_ctf.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
>diff --git a/lib/librte_eal/common/eal_common_trace_ctf.c
>b/lib/librte_eal/common/eal_common_trace_ctf.c
>index ac1f64d04b..22615c4e73 100644
>--- a/lib/librte_eal/common/eal_common_trace_ctf.c
>+++ b/lib/librte_eal/common/eal_common_trace_ctf.c
>@@ -37,11 +37,12 @@ meta_copy(char **meta, int *offset, char *str, int rc)
> if (rc < 0)
> return rc;
>
>- ptr = realloc(ptr, count + rc);
>+ ptr = realloc(ptr, count + rc + 1);
> if (ptr == NULL)
> goto free_str;
>
> memcpy(RTE_PTR_ADD(ptr, count), str, rc);
>+ ptr[count + rc] = '\0';
> count += rc;
> free(str);
>
>--
>2.23.0
Acked-by: Sunil Kumar Kori <skori@mavell.com>
@@ -37,11 +37,12 @@ meta_copy(char **meta, int *offset, char *str, int rc)
if (rc < 0)
return rc;
- ptr = realloc(ptr, count + rc);
+ ptr = realloc(ptr, count + rc + 1);
if (ptr == NULL)
goto free_str;
memcpy(RTE_PTR_ADD(ptr, count), str, rc);
+ ptr[count + rc] = '\0';
count += rc;
free(str);