| Index: net/base/mime_util.cc
|
| diff --git a/net/base/mime_util.cc b/net/base/mime_util.cc
|
| index 0a1774261ad45f5ba024842871cc747a2ed8e386..14b6f200c972f8ce521a24298f34578cf177ea9b 100644
|
| --- a/net/base/mime_util.cc
|
| +++ b/net/base/mime_util.cc
|
| @@ -115,8 +115,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)
|
| @@ -267,13 +270,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|.
|
|
|