[PATCH v1 2/6] perf test demangle-java: Don't segv if demangling fails

Ian Rogers posted 6 patches 3 months, 1 week ago
There is a newer version of this series
[PATCH v1 2/6] perf test demangle-java: Don't segv if demangling fails
Posted by Ian Rogers 3 months, 1 week ago
The buffer returned by dso__demangle_sym may be NULL, don't segv in
strcmp if this happens. Currently this happens for NO_LIBELF=1 builds.

Signed-off-by: Ian Rogers <irogers@google.com>
---
 tools/perf/tests/demangle-java-test.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/tools/perf/tests/demangle-java-test.c b/tools/perf/tests/demangle-java-test.c
index ebaf60cdfa99..0fb3e5a4a0ed 100644
--- a/tools/perf/tests/demangle-java-test.c
+++ b/tools/perf/tests/demangle-java-test.c
@@ -30,6 +30,11 @@ static int test__demangle_java(struct test_suite *test __maybe_unused, int subte
 
 	for (i = 0; i < ARRAY_SIZE(test_cases); i++) {
 		buf = dso__demangle_sym(/*dso=*/NULL, /*kmodule=*/0, test_cases[i].mangled);
+		if (!buf) {
+			pr_debug("FAILED to demangle: \"%s\"\n \"%s\"\n", test_cases[i].mangled,
+				 test_cases[i].demangled);
+			continue;
+		}
 		if (strcmp(buf, test_cases[i].demangled)) {
 			pr_debug("FAILED: %s: %s != %s\n", test_cases[i].mangled,
 				 buf, test_cases[i].demangled);
-- 
2.49.0.1204.g71687c7c1d-goog
Re: [PATCH v1 2/6] perf test demangle-java: Don't segv if demangling fails
Posted by Arnaldo Carvalho de Melo 3 months, 1 week ago
On Tue, May 27, 2025 at 11:06:59AM -0700, Ian Rogers wrote:
> The buffer returned by dso__demangle_sym may be NULL, don't segv in
> strcmp if this happens. Currently this happens for NO_LIBELF=1 builds.
> 
> Signed-off-by: Ian Rogers <irogers@google.com>
> ---
>  tools/perf/tests/demangle-java-test.c | 5 +++++
>  1 file changed, 5 insertions(+)

Thanks, applied to perf-tools-next,

- Arnaldo
 
> diff --git a/tools/perf/tests/demangle-java-test.c b/tools/perf/tests/demangle-java-test.c
> index ebaf60cdfa99..0fb3e5a4a0ed 100644
> --- a/tools/perf/tests/demangle-java-test.c
> +++ b/tools/perf/tests/demangle-java-test.c
> @@ -30,6 +30,11 @@ static int test__demangle_java(struct test_suite *test __maybe_unused, int subte
>  
>  	for (i = 0; i < ARRAY_SIZE(test_cases); i++) {
>  		buf = dso__demangle_sym(/*dso=*/NULL, /*kmodule=*/0, test_cases[i].mangled);
> +		if (!buf) {
> +			pr_debug("FAILED to demangle: \"%s\"\n \"%s\"\n", test_cases[i].mangled,
> +				 test_cases[i].demangled);
> +			continue;
> +		}
>  		if (strcmp(buf, test_cases[i].demangled)) {
>  			pr_debug("FAILED: %s: %s != %s\n", test_cases[i].mangled,
>  				 buf, test_cases[i].demangled);
> -- 
> 2.49.0.1204.g71687c7c1d-goog