diff options
author | ericu@google.com <ericu@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-28 01:21:30 +0000 |
---|---|---|
committer | ericu@google.com <ericu@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-28 01:21:30 +0000 |
commit | 24099a743011d05a0077df37a3e9a1b13f62ff1a (patch) | |
tree | 70ef06c7496e6fc67116c56c5bebf4bf1fd2b9da /webkit/fileapi | |
parent | 054702d224472e01faf94482e2219ff1cd2b1aa7 (diff) | |
download | chromium_src-24099a743011d05a0077df37a3e9a1b13f62ff1a.zip chromium_src-24099a743011d05a0077df37a3e9a1b13f62ff1a.tar.gz chromium_src-24099a743011d05a0077df37a3e9a1b13f62ff1a.tar.bz2 |
Remove old filesystem naming restrictions, as per the new spec.
I retain backslash as illegal, as it's currently a real pain to support.
BUG=none
TEST=unit tests
Review URL: http://codereview.chromium.org/7084008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@87131 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/fileapi')
-rw-r--r-- | webkit/fileapi/file_system_path_manager_unittest.cc | 102 | ||||
-rw-r--r-- | webkit/fileapi/sandbox_mount_point_provider.cc | 13 |
2 files changed, 65 insertions, 50 deletions
diff --git a/webkit/fileapi/file_system_path_manager_unittest.cc b/webkit/fileapi/file_system_path_manager_unittest.cc index cfdd5ca..122487e 100644 --- a/webkit/fileapi/file_system_path_manager_unittest.cc +++ b/webkit/fileapi/file_system_path_manager_unittest.cc @@ -107,21 +107,24 @@ const struct IsRestrictedNameTest { FilePath::StringType name; bool expected_dangerous; } kIsRestrictedNameTestCases[] = { - // Name that has restricted names in it. - { FILE_PATH_LITERAL("con"), true, }, - { FILE_PATH_LITERAL("Con.txt"), true, }, - { FILE_PATH_LITERAL("Prn.png"), true, }, - { FILE_PATH_LITERAL("AUX"), true, }, - { FILE_PATH_LITERAL("nUl."), true, }, - { FILE_PATH_LITERAL("coM1"), true, }, - { FILE_PATH_LITERAL("COM3.com"), true, }, - { FILE_PATH_LITERAL("cOM7"), true, }, - { FILE_PATH_LITERAL("com9"), true, }, - { FILE_PATH_LITERAL("lpT1"), true, }, - { FILE_PATH_LITERAL("LPT4.com"), true, }, - { FILE_PATH_LITERAL("lPT8"), true, }, - { FILE_PATH_LITERAL("lPT9"), true, }, - // Similar but safe cases. + + // Names that contain strings that used to be restricted, but are now allowed. + { FILE_PATH_LITERAL("con"), false, }, + { FILE_PATH_LITERAL("Con.txt"), false, }, + { FILE_PATH_LITERAL("Prn.png"), false, }, + { FILE_PATH_LITERAL("AUX"), false, }, + { FILE_PATH_LITERAL("nUl."), false, }, + { FILE_PATH_LITERAL("coM1"), false, }, + { FILE_PATH_LITERAL("COM3.com"), false, }, + { FILE_PATH_LITERAL("cOM7"), false, }, + { FILE_PATH_LITERAL("com9"), false, }, + { FILE_PATH_LITERAL("lpT1"), false, }, + { FILE_PATH_LITERAL("LPT4.com"), false, }, + { FILE_PATH_LITERAL("lPT8"), false, }, + { FILE_PATH_LITERAL("lPT9"), false, }, + { FILE_PATH_LITERAL("com1."), false, }, + + // Similar cases that have always been allowed. { FILE_PATH_LITERAL("con3"), false, }, { FILE_PATH_LITERAL("PrnImage.png"), false, }, { FILE_PATH_LITERAL("AUXX"), false, }, @@ -131,14 +134,15 @@ const struct IsRestrictedNameTest { { FILE_PATH_LITERAL("lpT0"), false, }, { FILE_PATH_LITERAL("LPT.com"), false, }, - // Ends with period or whitespace. - { FILE_PATH_LITERAL("b "), true, }, - { FILE_PATH_LITERAL("b\t"), true, }, - { FILE_PATH_LITERAL("b\n"), true, }, - { FILE_PATH_LITERAL("b\r\n"), true, }, - { FILE_PATH_LITERAL("b."), true, }, - { FILE_PATH_LITERAL("b.."), true, }, - // Similar but safe cases. + // Ends with period or whitespace--used to be banned, now OK. + { FILE_PATH_LITERAL("b "), false, }, + { FILE_PATH_LITERAL("b\t"), false, }, + { FILE_PATH_LITERAL("b\n"), false, }, + { FILE_PATH_LITERAL("b\r\n"), false, }, + { FILE_PATH_LITERAL("b."), false, }, + { FILE_PATH_LITERAL("b.."), false, }, + + // Similar cases that have always been allowed. { FILE_PATH_LITERAL("b c"), false, }, { FILE_PATH_LITERAL("b\tc"), false, }, { FILE_PATH_LITERAL("b\nc"), false, }, @@ -148,27 +152,47 @@ const struct IsRestrictedNameTest { { FILE_PATH_LITERAL("b..c"), false, }, // Name that has restricted chars in it. + { FILE_PATH_LITERAL("\\"), true, }, + { FILE_PATH_LITERAL("/"), true, }, { FILE_PATH_LITERAL("a\\b"), true, }, { FILE_PATH_LITERAL("a/b"), true, }, - { FILE_PATH_LITERAL("a<b"), true, }, - { FILE_PATH_LITERAL("a>b"), true, }, - { FILE_PATH_LITERAL("a:b"), true, }, - { FILE_PATH_LITERAL("a?b"), true, }, - { FILE_PATH_LITERAL("a|b"), true, }, { FILE_PATH_LITERAL("ab\\"), true, }, - { FILE_PATH_LITERAL("ab/.txt"), true, }, - { FILE_PATH_LITERAL("ab<.txt"), true, }, - { FILE_PATH_LITERAL("ab>.txt"), true, }, - { FILE_PATH_LITERAL("ab:.txt"), true, }, - { FILE_PATH_LITERAL("ab?.txt"), true, }, - { FILE_PATH_LITERAL("ab|.txt"), true, }, + { FILE_PATH_LITERAL("ab/"), true, }, { FILE_PATH_LITERAL("\\ab"), true, }, { FILE_PATH_LITERAL("/ab"), true, }, - { FILE_PATH_LITERAL("<ab"), true, }, - { FILE_PATH_LITERAL(">ab"), true, }, - { FILE_PATH_LITERAL(":ab"), true, }, - { FILE_PATH_LITERAL("?ab"), true, }, - { FILE_PATH_LITERAL("|ab"), true, }, + { FILE_PATH_LITERAL("ab/.txt"), true, }, + { FILE_PATH_LITERAL("ab\\.txt"), true, }, + + // Names that contain chars that were formerly restricted, now OK. + { FILE_PATH_LITERAL("a<b"), false, }, + { FILE_PATH_LITERAL("a>b"), false, }, + { FILE_PATH_LITERAL("a:b"), false, }, + { FILE_PATH_LITERAL("a?b"), false, }, + { FILE_PATH_LITERAL("a|b"), false, }, + { FILE_PATH_LITERAL("ab<.txt"), false, }, + { FILE_PATH_LITERAL("ab>.txt"), false, }, + { FILE_PATH_LITERAL("ab:.txt"), false, }, + { FILE_PATH_LITERAL("ab?.txt"), false, }, + { FILE_PATH_LITERAL("ab|.txt"), false, }, + { FILE_PATH_LITERAL("<ab"), false, }, + { FILE_PATH_LITERAL(">ab"), false, }, + { FILE_PATH_LITERAL(":ab"), false, }, + { FILE_PATH_LITERAL("?ab"), false, }, + { FILE_PATH_LITERAL("|ab"), false, }, + + // Names that are restricted still. + { FILE_PATH_LITERAL(".."), true, }, + { FILE_PATH_LITERAL("."), true, }, + + // Similar but safe cases. + { FILE_PATH_LITERAL(" ."), false, }, + { FILE_PATH_LITERAL(". "), false, }, + { FILE_PATH_LITERAL(" . "), false, }, + { FILE_PATH_LITERAL(" .."), false, }, + { FILE_PATH_LITERAL(".. "), false, }, + { FILE_PATH_LITERAL(" .. "), false, }, + { FILE_PATH_LITERAL("b."), false, }, + { FILE_PATH_LITERAL(".b"), false, }, }; FilePath UTF8ToFilePath(const std::string& str) { diff --git a/webkit/fileapi/sandbox_mount_point_provider.cc b/webkit/fileapi/sandbox_mount_point_provider.cc index 2c32d74..ca900ba 100644 --- a/webkit/fileapi/sandbox_mount_point_provider.cc +++ b/webkit/fileapi/sandbox_mount_point_provider.cc @@ -38,14 +38,12 @@ static const unsigned kOldFileSystemUniqueDirectoryNameLength = // Restricted names. // http://dev.w3.org/2009/dap/file-system/file-dir-sys.html#naming-restrictions static const char* const kRestrictedNames[] = { - "con", "prn", "aux", "nul", - "com1", "com2", "com3", "com4", "com5", "com6", "com7", "com8", "com9", - "lpt1", "lpt2", "lpt3", "lpt4", "lpt5", "lpt6", "lpt7", "lpt8", "lpt9", + ".", "..", }; // Restricted chars. static const FilePath::CharType kRestrictedChars[] = { - '/', '\\', '<', '>', ':', '?', '*', '"', '|', + '/', '\\', }; inline std::string FilePathStringToASCII( @@ -382,10 +380,6 @@ bool SandboxMountPointProvider::IsRestrictedFileName(const FilePath& filename) if (filename.value().empty()) return false; - if (IsWhitespace(filename.value()[filename.value().size() - 1]) || - filename.value()[filename.value().size() - 1] == '.') - return true; - std::string filename_lower = StringToLowerASCII( FilePathStringToASCII(filename.value())); @@ -393,9 +387,6 @@ bool SandboxMountPointProvider::IsRestrictedFileName(const FilePath& filename) // Exact match. if (filename_lower == kRestrictedNames[i]) return true; - // Starts with "RESTRICTED_NAME.". - if (filename_lower.find(std::string(kRestrictedNames[i]) + ".") == 0) - return true; } for (size_t i = 0; i < arraysize(kRestrictedChars); ++i) { |