lkml.org 
[lkml]   [2022]   [Jun]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.18 786/879] selftests/landlock: Test landlock_create_ruleset(2) argument check ordering
    Date
    From: Mickaël Salaün <mic@digikod.net>

    commit 6533d0c3a86ee1cc74ff37ac92ca597deb87015c upstream.

    Add inval_create_ruleset_arguments, extension of
    inval_create_ruleset_flags, to also check error ordering for
    landlock_create_ruleset(2).

    This is similar to the previous commit checking landlock_add_rule(2).

    Test coverage for security/landlock is 94.4% of 504 lines accorging to
    gcc/gcov-11.

    Link: https://lore.kernel.org/r/20220506160820.524344-11-mic@digikod.net
    Cc: stable@vger.kernel.org
    Signed-off-by: Mickaël Salaün <mic@digikod.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    tools/testing/selftests/landlock/base_test.c | 21 ++++++++++++++++++++-
    1 file changed, 20 insertions(+), 1 deletion(-)

    --- a/tools/testing/selftests/landlock/base_test.c
    +++ b/tools/testing/selftests/landlock/base_test.c
    @@ -97,14 +97,17 @@ TEST(abi_version)
    ASSERT_EQ(EINVAL, errno);
    }

    -TEST(inval_create_ruleset_flags)
    +/* Tests ordering of syscall argument checks. */
    +TEST(create_ruleset_checks_ordering)
    {
    const int last_flag = LANDLOCK_CREATE_RULESET_VERSION;
    const int invalid_flag = last_flag << 1;
    + int ruleset_fd;
    const struct landlock_ruleset_attr ruleset_attr = {
    .handled_access_fs = LANDLOCK_ACCESS_FS_READ_FILE,
    };

    + /* Checks priority for invalid flags. */
    ASSERT_EQ(-1, landlock_create_ruleset(NULL, 0, invalid_flag));
    ASSERT_EQ(EINVAL, errno);

    @@ -119,6 +122,22 @@ TEST(inval_create_ruleset_flags)
    landlock_create_ruleset(&ruleset_attr, sizeof(ruleset_attr),
    invalid_flag));
    ASSERT_EQ(EINVAL, errno);
    +
    + /* Checks too big ruleset_attr size. */
    + ASSERT_EQ(-1, landlock_create_ruleset(&ruleset_attr, -1, 0));
    + ASSERT_EQ(E2BIG, errno);
    +
    + /* Checks too small ruleset_attr size. */
    + ASSERT_EQ(-1, landlock_create_ruleset(&ruleset_attr, 0, 0));
    + ASSERT_EQ(EINVAL, errno);
    + ASSERT_EQ(-1, landlock_create_ruleset(&ruleset_attr, 1, 0));
    + ASSERT_EQ(EINVAL, errno);
    +
    + /* Checks valid call. */
    + ruleset_fd =
    + landlock_create_ruleset(&ruleset_attr, sizeof(ruleset_attr), 0);
    + ASSERT_LE(0, ruleset_fd);
    + ASSERT_EQ(0, close(ruleset_fd));
    }

    /* Tests ordering of syscall argument checks. */

    \
     
     \ /
      Last update: 2022-06-08 04:58    [W:4.078 / U:1.432 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site