Index: Source/core/loader/LinkHeader.cpp |
diff --git a/Source/core/loader/LinkHeader.cpp b/Source/core/loader/LinkHeader.cpp |
index e9adad68e923b3ac3f845d7737d073365f95aa23..434c4e951db31bddd21945de050b7f675ae0cec1 100644 |
--- a/Source/core/loader/LinkHeader.cpp |
+++ b/Source/core/loader/LinkHeader.cpp |
@@ -25,7 +25,17 @@ static bool isValidURLChar(CharType chr) |
template <typename CharType> |
static bool isValidParameterNameChar(CharType chr) |
{ |
- return !isWhitespace(chr) && chr != '='; |
+ // Alpha-numeric is a valid char. |
+ // This is likely the common case - bailing early. |
+ if (isASCIIAlphanumeric(chr)) |
+ return true; |
+ // A separator or CTL or '%', '*' or '\'' means the char is not valid. |
+ if (chr <= ' ' || chr > '|' || chr == '{' || chr == ']' || chr == '[' |
+ || chr == '/' || chr == '\\' || (chr <= '@' && chr >= ':') || chr == ',' |
+ || (chr >= '(' && chr <= '*') || chr == '\'' || chr == '"' || chr == '%') { |
+ return false; |
Mike West
2015/09/01 13:48:42
This requires way too much knowledge of ASCII. Lik
|
+ } |
+ return true; |
} |
template <typename CharType> |
@@ -40,6 +50,7 @@ static bool isValidParameterValueChar(CharType chr) |
return !isWhitespace(chr) && !isValidParameterValueEnd(chr); |
} |
+// Verify that the parameter is a link-extension which according to spec doesn't have to have a value. |
static bool isExtensionParameter(LinkHeader::LinkParameterName name) |
{ |
return name > LinkHeader::LinkParameterAnchor; |