Re: [PATCH] bpf: selftests: global_funcs: check err_str before strstr

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 8/18/20 7:34 PM, Yauheni Kaliuta wrote:
The error path in libbpf.c:load_program() has calls to pr_warn()
which ends up for global_funcs tests to
test_global_funcs.c:libbpf_debug_print().

For the tests with no struct test_def::err_str initialized with a
string, it causes call of strstr() with NULL as the second argument
and it segfaults.

Fix it by calling strstr() only for non-NULL err_str.

The patch does not fix the test itself.

So this happens in older kernel, right? Could you clarify more
in which kernel and what environment? It probably no need to
fix the issue for really old kernel but some clarification
will be good.


Signed-off-by: Yauheni Kaliuta <yauheni.kaliuta@xxxxxxxxxx>
---
  tools/testing/selftests/bpf/prog_tests/test_global_funcs.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/testing/selftests/bpf/prog_tests/test_global_funcs.c b/tools/testing/selftests/bpf/prog_tests/test_global_funcs.c
index 25b068591e9a..6ad14c5465eb 100644
--- a/tools/testing/selftests/bpf/prog_tests/test_global_funcs.c
+++ b/tools/testing/selftests/bpf/prog_tests/test_global_funcs.c
@@ -19,7 +19,7 @@ static int libbpf_debug_print(enum libbpf_print_level level,
  	log_buf = va_arg(args, char *);
  	if (!log_buf)
  		goto out;
-	if (strstr(log_buf, err_str) == 0)
+	if ((err_str != NULL) && (strstr(log_buf, err_str) == 0))

Looks good but the code can be simplified as
	if (err_str && strstr(log_buf, err_str) == 0)
		found = true;

  		found = true;
  out:
  	printf(format, log_buf);




[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux