Index: extensions/common/url_pattern.cc |
diff --git a/extensions/common/url_pattern.cc b/extensions/common/url_pattern.cc |
index f85661a026a4dd0edcc09f24332b8ad9726d2b0e..735e71e9fa0298704005aa12e3f11fd8fabbc86e 100644 |
--- a/extensions/common/url_pattern.cc |
+++ b/extensions/common/url_pattern.cc |
@@ -54,6 +54,7 @@ const char kParseErrorEmptyHost[] = "Host can not be empty."; |
const char kParseErrorInvalidHostWildcard[] = "Invalid host wildcard."; |
const char kParseErrorEmptyPath[] = "Empty path."; |
const char kParseErrorInvalidPort[] = "Invalid port."; |
+const char kParseErrorInvalidHost[] = "Invalid host."; |
// Message explaining each URLPattern::ParseResult. |
const char* const kParseResultMessages[] = { |
@@ -65,6 +66,7 @@ const char* const kParseResultMessages[] = { |
kParseErrorInvalidHostWildcard, |
kParseErrorEmptyPath, |
kParseErrorInvalidPort, |
+ kParseErrorInvalidHost, |
}; |
COMPILE_ASSERT(URLPattern::NUM_PARSE_RESULTS == arraysize(kParseResultMessages), |
@@ -266,6 +268,10 @@ URLPattern::ParseResult URLPattern::Parse(const std::string& pattern) { |
if (host_.find('*') != std::string::npos) |
return PARSE_ERROR_INVALID_HOST_WILDCARD; |
+ // Null characters are not allowed in hosts. |
+ if (host_.find('\0') != std::string::npos) |
+ return PARSE_ERROR_INVALID_HOST; |
+ |
return PARSE_SUCCESS; |
} |