lkml.org 
[lkml]   [2020]   [Jun]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.7 122/376] selftests/bpf: Fix memory leak in test selector
    Date
    From: Andrii Nakryiko <andriin@fb.com>

    [ Upstream commit f25d5416d64c796aa639136eb0b076c8bd579b54 ]

    Free test selector substrings, which were strdup()'ed.

    Fixes: b65053cd94f4 ("selftests/bpf: Add whitelist/blacklist of test names to test_progs")
    Signed-off-by: Andrii Nakryiko <andriin@fb.com>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Link: https://lore.kernel.org/bpf/20200429012111.277390-6-andriin@fb.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    tools/testing/selftests/bpf/test_progs.c | 20 ++++++++++++++++----
    1 file changed, 16 insertions(+), 4 deletions(-)

    diff --git a/tools/testing/selftests/bpf/test_progs.c b/tools/testing/selftests/bpf/test_progs.c
    index b521e0a512b6..86d0020c9eec 100644
    --- a/tools/testing/selftests/bpf/test_progs.c
    +++ b/tools/testing/selftests/bpf/test_progs.c
    @@ -420,6 +420,18 @@ static int libbpf_print_fn(enum libbpf_print_level level,
    return 0;
    }

    +static void free_str_set(const struct str_set *set)
    +{
    + int i;
    +
    + if (!set)
    + return;
    +
    + for (i = 0; i < set->cnt; i++)
    + free((void *)set->strs[i]);
    + free(set->strs);
    +}
    +
    static int parse_str_list(const char *s, struct str_set *set)
    {
    char *input, *state = NULL, *next, **tmp, **strs = NULL;
    @@ -756,11 +768,11 @@ int main(int argc, char **argv)
    fprintf(stdout, "Summary: %d/%d PASSED, %d SKIPPED, %d FAILED\n",
    env.succ_cnt, env.sub_succ_cnt, env.skip_cnt, env.fail_cnt);

    - free(env.test_selector.blacklist.strs);
    - free(env.test_selector.whitelist.strs);
    + free_str_set(&env.test_selector.blacklist);
    + free_str_set(&env.test_selector.whitelist);
    free(env.test_selector.num_set);
    - free(env.subtest_selector.blacklist.strs);
    - free(env.subtest_selector.whitelist.strs);
    + free_str_set(&env.subtest_selector.blacklist);
    + free_str_set(&env.subtest_selector.whitelist);
    free(env.subtest_selector.num_set);

    return env.fail_cnt ? EXIT_FAILURE : EXIT_SUCCESS;
    --
    2.25.1


    \
     
     \ /
      Last update: 2020-06-19 17:24    [W:2.522 / U:0.036 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site