| Index: chrome/browser/extensions/api/downloads/downloads_api.cc
|
| diff --git a/chrome/browser/extensions/api/downloads/downloads_api.cc b/chrome/browser/extensions/api/downloads/downloads_api.cc
|
| index 6097e7704e677addda4ec725481ca43acd7dfa5b..cc9e6bb6cfdffc43835c9553d60caa75b57f7239 100644
|
| --- a/chrome/browser/extensions/api/downloads/downloads_api.cc
|
| +++ b/chrome/browser/extensions/api/downloads/downloads_api.cc
|
| @@ -86,7 +86,9 @@ const char kIconNotFound[] = "Icon not found";
|
| const char kInvalidDangerType[] = "Invalid danger type";
|
| const char kInvalidFilename[] = "Invalid filename";
|
| const char kInvalidFilter[] = "Invalid query filter";
|
| -const char kInvalidHeader[] = "Invalid request header";
|
| +const char kInvalidHeaderName[] = "Invalid request header name";
|
| +const char kInvalidHeaderUnsafe[] = "Unsafe request header name";
|
| +const char kInvalidHeaderValue[] = "Invalid request header value";
|
| const char kInvalidId[] = "Invalid downloadId";
|
| const char kInvalidOrderBy[] = "Invalid orderBy field";
|
| const char kInvalidQueryLimit[] = "Invalid query limit";
|
| @@ -1036,8 +1038,16 @@ bool DownloadsDownloadFunction::RunAsync() {
|
| iter != options.headers->end();
|
| ++iter) {
|
| const HeaderNameValuePair& name_value = **iter;
|
| + if (!net::HttpUtil::IsValidHeaderName(name_value.name)) {
|
| + error_ = errors::kInvalidHeaderName;
|
| + return false;
|
| + }
|
| if (!net::HttpUtil::IsSafeHeader(name_value.name)) {
|
| - error_ = errors::kInvalidHeader;
|
| + error_ = errors::kInvalidHeaderUnsafe;
|
| + return false;
|
| + }
|
| + if (!net::HttpUtil::IsValidHeaderValue(name_value.value)) {
|
| + error_ = errors::kInvalidHeaderValue;
|
| return false;
|
| }
|
| download_params->add_request_header(name_value.name, name_value.value);
|
|
|