Chromium Code Reviews| 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; |