summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJeff Sharkey <jsharkey@android.com>2014-11-26 13:41:36 -0800
committerJeff Sharkey <jsharkey@android.com>2014-11-26 13:41:39 -0800
commit1bb7a08a3df915e84647bc8a5ca87cc157378e61 (patch)
treee63b98ab0feb4df1aca413cba86053120631d4a9 /src
parent0032d17c1ddbabfea528eb55ca5d03281871f848 (diff)
downloadandroid_packages_providers_DownloadProvider-1bb7a08a3df915e84647bc8a5ca87cc157378e61.tar.gz
android_packages_providers_DownloadProvider-1bb7a08a3df915e84647bc8a5ca87cc157378e61.tar.bz2
android_packages_providers_DownloadProvider-1bb7a08a3df915e84647bc8a5ca87cc157378e61.zip
Use FileUtils to validate FAT filenames.
Bug: 18512473 Change-Id: I686c7c3487f789dc0437513fbc6fed54dc62721f
Diffstat (limited to 'src')
-rw-r--r--src/com/android/providers/downloads/Helpers.java51
1 files changed, 1 insertions, 50 deletions
diff --git a/src/com/android/providers/downloads/Helpers.java b/src/com/android/providers/downloads/Helpers.java
index eb071395..0aa49c0a 100644
--- a/src/com/android/providers/downloads/Helpers.java
+++ b/src/com/android/providers/downloads/Helpers.java
@@ -214,7 +214,7 @@ public class Helpers {
// The VFAT file system is assumed as target for downloads.
// Replace invalid characters according to the specifications of VFAT.
- filename = replaceInvalidVfatCharacters(filename);
+ filename = FileUtils.buildValidFatFilename(filename);
return filename;
}
@@ -665,53 +665,4 @@ public class Helpers {
(c >= '0' && c <= '9');
}
}
-
- /**
- * Replace invalid filename characters according to
- * specifications of the VFAT.
- * @note Package-private due to testing.
- */
- private static String replaceInvalidVfatCharacters(String filename) {
- final char START_CTRLCODE = 0x00;
- final char END_CTRLCODE = 0x1f;
- final char QUOTEDBL = 0x22;
- final char ASTERISK = 0x2A;
- final char SLASH = 0x2F;
- final char COLON = 0x3A;
- final char LESS = 0x3C;
- final char GREATER = 0x3E;
- final char QUESTION = 0x3F;
- final char BACKSLASH = 0x5C;
- final char BAR = 0x7C;
- final char DEL = 0x7F;
- final char UNDERSCORE = 0x5F;
-
- StringBuffer sb = new StringBuffer();
- char ch;
- boolean isRepetition = false;
- for (int i = 0; i < filename.length(); i++) {
- ch = filename.charAt(i);
- if ((START_CTRLCODE <= ch &&
- ch <= END_CTRLCODE) ||
- ch == QUOTEDBL ||
- ch == ASTERISK ||
- ch == SLASH ||
- ch == COLON ||
- ch == LESS ||
- ch == GREATER ||
- ch == QUESTION ||
- ch == BACKSLASH ||
- ch == BAR ||
- ch == DEL){
- if (!isRepetition) {
- sb.append(UNDERSCORE);
- isRepetition = true;
- }
- } else {
- sb.append(ch);
- isRepetition = false;
- }
- }
- return sb.toString();
- }
}