Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 05af2766 authored by Isaac J. Manjarres's avatar Isaac J. Manjarres
Browse files

ashmem_test: Always include PROT_EXEC as an expected permission



Memfds can always be mapped with PROT_EXEC. There is no support for
removing that, and there is no known reason to support it. Therefore,
update the tests to always expect PROT_EXEC as part of the mapping
permissions.

Bug: 111903542
Change-Id: Ia8bd5d47e012e24045d7ea02f63fe1b15e41e933
Signed-off-by: default avatarIsaac J. Manjarres <isaacmanjarres@google.com>
parent 95c35724
Loading
Loading
Loading
Loading
+9 −7
Original line number Diff line number Diff line
@@ -181,20 +181,22 @@ TEST(AshmemTest, ProtTest) {
    const size_t size = getpagesize();
    void *region;

    ASSERT_NO_FATAL_FAILURE(TestCreateRegion(size, fd, PROT_READ));
    ASSERT_NO_FATAL_FAILURE(TestCreateRegion(size, fd, PROT_READ | PROT_EXEC));
    TestProtDenied(fd, size, PROT_WRITE);
    TestProtIs(fd, PROT_READ);
    TestProtIs(fd, PROT_READ | PROT_EXEC);
    ASSERT_NO_FATAL_FAILURE(TestMmap(fd, size, PROT_READ, &region));
    EXPECT_EQ(0, munmap(region, size));

    ASSERT_NO_FATAL_FAILURE(TestCreateRegion(size, fd, PROT_READ | PROT_WRITE));
    TestProtIs(fd, PROT_READ | PROT_WRITE);
    ASSERT_EQ(0, ashmem_set_prot_region(fd, PROT_READ));
    ASSERT_NO_FATAL_FAILURE(TestCreateRegion(size, fd, PROT_READ | PROT_WRITE |
                                             PROT_EXEC));
    TestProtIs(fd, PROT_READ | PROT_WRITE | PROT_EXEC);
    ASSERT_EQ(0, ashmem_set_prot_region(fd, PROT_READ | PROT_EXEC));
    errno = 0;
    ASSERT_EQ(-1, ashmem_set_prot_region(fd, PROT_READ | PROT_WRITE))
    ASSERT_EQ(-1, ashmem_set_prot_region(fd, PROT_READ | PROT_WRITE |
                                         PROT_EXEC))
        << "kernel shouldn't allow adding protection bits";
    EXPECT_EQ(EINVAL, errno);
    TestProtIs(fd, PROT_READ);
    TestProtIs(fd, PROT_READ | PROT_EXEC);
    TestProtDenied(fd, size, PROT_WRITE);
}