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

Commit 4306ff00 authored by Christopher Ferris's avatar Christopher Ferris Committed by Automerger Merge Worker
Browse files

Merge "Change call to mmap64." am: 78210481 am: 061126b6

Change-Id: I33f78f2e46a562986a2b9ca3f590842fe466a0d5
parents d93e0018 061126b6
Loading
Loading
Loading
Loading
+1 −1
Original line number 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;
    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 (errno == EINVAL && length == 0) {
            ptr = nullptr;
+20 −0
Original line number Diff line number Diff line
@@ -32,3 +32,23 @@ TEST(FileMap, zero_length_mapping) {
    ASSERT_EQ(0u, m.getDataLength());
    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());
}