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

Commit 78210481 authored by Christopher Ferris's avatar Christopher Ferris Committed by Gerrit Code Review
Browse files

Merge "Change call to mmap64."

parents 4cd4b45a 7b9f35c9
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -195,7 +195,7 @@ bool FileMap::create(const char* origFileName, int fd, off64_t offset, size_t le
    int prot = PROT_READ;
    int prot = PROT_READ;
    if (!readOnly) prot |= PROT_WRITE;
    if (!readOnly) prot |= PROT_WRITE;


    void* ptr = mmap(nullptr, adjLength, prot, flags, fd, adjOffset);
    void* ptr = mmap64(nullptr, adjLength, prot, flags, fd, adjOffset);
    if (ptr == MAP_FAILED) {
    if (ptr == MAP_FAILED) {
        if (errno == EINVAL && length == 0) {
        if (errno == EINVAL && length == 0) {
            ptr = nullptr;
            ptr = nullptr;
+20 −0
Original line number Original line Diff line number Diff line
@@ -32,3 +32,23 @@ TEST(FileMap, zero_length_mapping) {
    ASSERT_EQ(0u, m.getDataLength());
    ASSERT_EQ(0u, m.getDataLength());
    ASSERT_EQ(4096, m.getDataOffset());
    ASSERT_EQ(4096, m.getDataOffset());
}
}

TEST(FileMap, large_offset) {
    // Make sure that an offset > INT32_MAX will not fail the create
    // function. See http://b/155662887.
    TemporaryFile tf;
    ASSERT_TRUE(tf.fd != -1);

    off64_t offset = INT32_MAX + 1024LL;

    // Make the temporary file large enough to pass the mmap.
    ASSERT_EQ(offset, lseek64(tf.fd, offset, SEEK_SET));
    char value = 0;
    ASSERT_EQ(1, write(tf.fd, &value, 1));

    android::FileMap m;
    ASSERT_TRUE(m.create("test", tf.fd, offset, 0, true));
    ASSERT_STREQ("test", m.getFileName());
    ASSERT_EQ(0u, m.getDataLength());
    ASSERT_EQ(offset, m.getDataOffset());
}