[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