Index: webkit/common/database/database_identifier.cc |
diff --git a/webkit/common/database/database_identifier.cc b/webkit/common/database/database_identifier.cc |
index c4649d2b9ca126dece8e136c22fdebb654cbbfd8..7bd53f77034cdc275a28bbed44b711f15922d04e 100644 |
--- a/webkit/common/database/database_identifier.cc |
+++ b/webkit/common/database/database_identifier.cc |
@@ -58,6 +58,13 @@ DatabaseIdentifier DatabaseIdentifier::CreateFromOrigin(const GURL& origin) { |
DatabaseIdentifier DatabaseIdentifier::Parse(const std::string& identifier) { |
if (!base::IsStringASCII(identifier)) |
return DatabaseIdentifier(); |
+ if (identifier.find("..") != std::string::npos) |
+ return DatabaseIdentifier(); |
+ char forbidden[] = {'\\', '/', ':' ,'\0'}; |
+ if (identifier.find_first_of(forbidden, 0, arraysize(forbidden)) != |
+ std::string::npos) { |
+ return DatabaseIdentifier(); |
+ } |
size_t first_underscore = identifier.find_first_of('_'); |
if (first_underscore == std::string::npos || first_underscore == 0) |