Commit e603a342 authored by Andrii Nakryiko's avatar Andrii Nakryiko Committed by Alexei Starovoitov
Browse files

selftests/bpf: make arg_parsing.c more robust to crashes



We started getting a crash in BPF CI, which seems to originate from
test_parse_test_list_file() test and is happening at this line:

  ASSERT_OK(strcmp("test_with_spaces", set.tests[0].name), "test 0 name");

One way we can crash there is if set.cnt zero, which is checked for with
ASSERT_EQ() above, but we proceed after this regardless of the outcome.
Instead of crashing, we should bail out with test failure early.

Similarly, if parse_test_list_file() fails, we shouldn't be even looking
at set, so bail even earlier if ASSERT_OK() fails.

Fixes: 64276f01 ("selftests/bpf: Test_progs can read test lists from file")
Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
Tested-by: default avatarIhor Solodrai <ihor.solodrai@linux.dev>
Link: https://lore.kernel.org/r/20251014202037.72922-1-andrii@kernel.org


Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
parent 7f9ee5fc
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -146,9 +146,12 @@ static void test_parse_test_list_file(void)

	init_test_filter_set(&set);

	ASSERT_OK(parse_test_list_file(tmpfile, &set, true), "parse file");
	if (!ASSERT_OK(parse_test_list_file(tmpfile, &set, true), "parse file"))
		goto out_fclose;

	if (!ASSERT_EQ(set.cnt, 4, "test  count"))
		goto out_free_set;

	ASSERT_EQ(set.cnt, 4, "test  count");
	ASSERT_OK(strcmp("test_with_spaces", set.tests[0].name), "test 0 name");
	ASSERT_EQ(set.tests[0].subtest_cnt, 0, "test 0 subtest count");
	ASSERT_OK(strcmp("testA", set.tests[1].name), "test 1 name");
@@ -158,8 +161,8 @@ static void test_parse_test_list_file(void)
	ASSERT_OK(strcmp("testB", set.tests[2].name), "test 2 name");
	ASSERT_OK(strcmp("testC_no_eof_newline", set.tests[3].name), "test 3 name");

out_free_set:
	free_test_filter_set(&set);

out_fclose:
	fclose(fp);
out_remove: