From 4f5e8b3ca489245005b76176ac6d28f5f184f3fe Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Thu, 11 Jun 2015 19:13:37 -0700 Subject: Valid filenames have length limits! ext4 filenames are at most 255 bytes. vfat filenames are bit more lax, but we're often saving them on ext4 through a FUSE daemon, so limit them the same way. Since package names are used as directory names, verify that they're valid filenames. Tests to verify behavior. Bug: 18689171 Change-Id: If7df4c40d352954510b71de4ff05d78259c721ed --- core/tests/coretests/src/android/os/FileUtilsTest.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'core/tests') diff --git a/core/tests/coretests/src/android/os/FileUtilsTest.java b/core/tests/coretests/src/android/os/FileUtilsTest.java index ee9e2e4..ac5abad 100644 --- a/core/tests/coretests/src/android/os/FileUtilsTest.java +++ b/core/tests/coretests/src/android/os/FileUtilsTest.java @@ -232,6 +232,18 @@ public class FileUtilsTest extends AndroidTestCase { assertEquals("foo_bar__baz", FileUtils.buildValidFatFilename("foo?bar**baz")); } + public void testTrimFilename() throws Exception { + assertEquals("short.txt", FileUtils.trimFilename("short.txt", 16)); + assertEquals("extrem...eme.txt", FileUtils.trimFilename("extremelylongfilename.txt", 16)); + + final String unicode = "a\u03C0\u03C0\u03C0\u03C0z"; + assertEquals("a\u03C0\u03C0\u03C0\u03C0z", FileUtils.trimFilename(unicode, 10)); + assertEquals("a\u03C0...\u03C0z", FileUtils.trimFilename(unicode, 9)); + assertEquals("a...\u03C0z", FileUtils.trimFilename(unicode, 8)); + assertEquals("a...\u03C0z", FileUtils.trimFilename(unicode, 7)); + assertEquals("a...z", FileUtils.trimFilename(unicode, 6)); + } + public void testBuildUniqueFile_normal() throws Exception { assertNameEquals("test.jpg", FileUtils.buildUniqueFile(mTarget, "image/jpeg", "test")); assertNameEquals("test.jpg", FileUtils.buildUniqueFile(mTarget, "image/jpeg", "test.jpg")); -- cgit v1.1