| 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.
|
| 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|.
|
|
|