Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [Medium] Missing NULL check on btf__raw_data() return value leads to segfault and uninitialized size usage in btf__new(). --
commit 843335a53af929d0f8f7676cbbf1cb2a7296aacb Author: Alan Maguire <[email protected]> selftests/bpf: Validate that btf__permute transfer works This patch adds test coverage for the btf__permute() transfer mode. It verifies type-ID remapping, LOCSEC record ordering in split BTF, and string handling and deduplication. > diff --git a/tools/testing/selftests/bpf/prog_tests/btf_permute.c > b/tools/testing/selftests/bpf/prog_tests/btf_permute.c > index 04ade5ad77aca..ef75fd71df96e 100644 > --- a/tools/testing/selftests/bpf/prog_tests/btf_permute.c > +++ b/tools/testing/selftests/bpf/prog_tests/btf_permute.c [ ... ] > +/* Permuting BTF with a layout section must keep section offsets in sync. */ > +static void test_permute_layout(void) > +{ > + LIBBPF_OPTS(btf_new_opts, opts, .add_layout = true); > + LIBBPF_OPTS(btf_permute_opts, permute_opts); > + struct btf *btf, *parsed, *transfer_btf = NULL; > + const void *raw; > + __u32 raw_sz; > + __u32 permute_ids[] = { 0, 1, BTF_PERMUTE_ID_TRANSFER | 2 }; > + int err; > + > + btf = btf__new_empty_opts(&opts); > + if (!ASSERT_OK_PTR(btf, "empty_layout_btf")) > + return; > + > + btf__add_int(btf, "int", 4, BTF_INT_SIGNED); > + btf__add_ptr(btf, 1); > + permute_opts.transfer_btf = &transfer_btf; > + err = btf__permute(btf, permute_ids, ARRAY_SIZE(permute_ids), > &permute_opts); > + if (!ASSERT_OK(err, "btf__permute_layout")) > + goto cleanup; > + > + raw = btf__raw_data(btf, &raw_sz); [Severity: Medium] Could this missing return check lead to passing a NULL pointer and uninitialized size to btf__new() if btf__raw_data() fails? > + parsed = btf__new(raw, raw_sz); > + if (!ASSERT_OK_PTR(parsed, "parse_permuted_layout")) > + goto cleanup; > + btf__free(parsed); > +cleanup: > + btf__free(transfer_btf); > + btf__free(btf); > +} -- Sashiko AI review ยท https://sashiko.dev/#/patchset/[email protected]?part=8
