[PATCH] libtraceevent: Do not return a local stack pointer in get_field_str()

Steven Rostedt <[email protected]>
Newsgroups org.kernel.vger.linux-trace-devel
Message-ID <[email protected]>
From: "Steven Rostedt (Google)" <[email protected]>

Jerome Marchand sent a patch with the description of:

    The function get_field_str() can return a pointer to string on the
    stack. Replace it by a global variable.

    Fixes a RETURN_LOCAL error (CWE-562)

But made hex a global variable. Having a generic name "hex" as a global
variable in a library will cause a lot of issues. Just make it a static
variable, and then it can be used outside the function.

Link: https://lore.kernel.org/linux-trace-devel/[email protected]/

Fixes: dee43d8067350 ("tools lib traceevent: Let filtering numbers by string use function names")
Reported-by: "Jerome Marchand" <[email protected]>
Signed-off-by: Steven Rostedt (Google) <[email protected]>
---
 src/parse-filter.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/parse-filter.c b/src/parse-filter.c
index e448ee2b6799..75b84a0cc4ae 100644
--- a/src/parse-filter.c
+++ b/src/parse-filter.c
@@ -1704,8 +1704,8 @@ static const char *get_field_str(struct tep_filter_arg *arg, struct tep_record *
 	struct tep_handle *tep;
 	unsigned long long addr;
 	const char *val = NULL;
+	static char hex[64];
 	unsigned int size;
-	char hex[64];
 
 	/* If the field is not a string convert it */
 	if (arg->str.field->flags & TEP_FIELD_IS_STRING) {
-- 
2.43.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.