summaryrefslogtreecommitdiffstats
path: root/libutils/tests
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2019-02-06 14:28:32 -0800
committerElliott Hughes <enh@google.com>2019-02-06 14:29:35 -0800
commiteb0ef145fd38922617e6ab3d94eaacde93e04c95 (patch)
tree63a400421b9bc3526032421fce23b8434c84a8d4 /libutils/tests
parenta42af36002914dc2efe9589a334c72eb5225d1c5 (diff)
downloadsystem_core-eb0ef145fd38922617e6ab3d94eaacde93e04c95.tar.gz
system_core-eb0ef145fd38922617e6ab3d94eaacde93e04c95.tar.bz2
system_core-eb0ef145fd38922617e6ab3d94eaacde93e04c95.zip
MappedFile and FileMap should support zero-length mappings.
Bug: http://b/119818070 "app crashes when reading asset of zero length" Test: ran tests Change-Id: Idd2ad6f6e72c8e445aff78a460fac96dea41c950
Diffstat (limited to 'libutils/tests')
-rw-r--r--libutils/tests/Android.bp1
-rw-r--r--libutils/tests/FileMap_test.cpp34
2 files changed, 35 insertions, 0 deletions
diff --git a/libutils/tests/Android.bp b/libutils/tests/Android.bp
index 1390552fa..62f5acb4e 100644
--- a/libutils/tests/Android.bp
+++ b/libutils/tests/Android.bp
@@ -22,6 +22,7 @@ cc_test {
srcs: [
"BitSet_test.cpp",
+ "FileMap_test.cpp",
"LruCache_test.cpp",
"Mutex_test.cpp",
"Singleton_test.cpp",
diff --git a/libutils/tests/FileMap_test.cpp b/libutils/tests/FileMap_test.cpp
new file mode 100644
index 000000000..576d89bbe
--- /dev/null
+++ b/libutils/tests/FileMap_test.cpp
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "utils/FileMap.h"
+
+#include <gtest/gtest.h>
+
+#include "android-base/file.h"
+
+TEST(FileMap, zero_length_mapping) {
+ // http://b/119818070 "app crashes when reading asset of zero length".
+ // mmap fails with EINVAL for a zero length region.
+ TemporaryFile tf;
+ ASSERT_TRUE(tf.fd != -1);
+
+ android::FileMap m;
+ ASSERT_TRUE(m.create("test", tf.fd, 4096, 0, true));
+ ASSERT_STREQ("test", m.getFileName());
+ ASSERT_EQ(0u, m.getDataLength());
+ ASSERT_EQ(4096, m.getDataOffset());
+}