Chromium Code Reviews| Index: net/base/mime_util.cc |
| diff --git a/net/base/mime_util.cc b/net/base/mime_util.cc |
| index ae4781a68ae8278d7dbbd44353184d84ab82292d..27c547b6e0b371769e563dcab9239773ead952dd 100644 |
| --- a/net/base/mime_util.cc |
| +++ b/net/base/mime_util.cc |
| @@ -116,8 +116,11 @@ const char* FindMimeType(const MimeInfo* mappings, |
| const char* extensions = mappings[i].extensions; |
| for (;;) { |
| size_t end_pos = strcspn(extensions, ","); |
| + // The length check is required to prevent the StringPiece below from |
| + // including uninitialized memory if ext is longer than extensions. |
|
Ryan Sleevi
2015/07/10 12:43:38
Seems somewhat inconsistent that you documented th
brettw
2015/07/10 17:01:01
I find this case non-trivially more confusing comp
|
| if (end_pos == ext.size() && |
| - base::strncasecmp(extensions, ext.data(), ext.size()) == 0) |
| + base::EqualsCaseInsensitiveASCII( |
| + base::StringPiece(extensions, ext.size()), ext)) |
| return mappings[i].mime_type; |
| extensions += end_pos; |
| if (!*extensions) |
| @@ -268,13 +271,10 @@ bool MimeUtil::MatchesMimeType(const std::string& mime_type_pattern, |
| const std::string::size_type star = base_pattern.find('*'); |
| if (star == std::string::npos) { |
| - if (base_pattern.size() == base_type.size() && |
| - base::strncasecmp(base_pattern.data(), base_type.data(), |
| - base_pattern.size()) == 0) { |
| + if (base::EqualsCaseInsensitiveASCII(base_pattern, base_type)) |
| return MatchesMimeTypeParameters(mime_type_pattern, mime_type); |
| - } else { |
| + else |
| return false; |
| - } |
| } |
| // Test length to prevent overlap between |left| and |right|. |