diff options
-rw-r--r-- | chrome/browser/resource_dispatcher_host.cc | 1 | ||||
-rw-r--r-- | net/base/mime_sniffer.cc | 4 | ||||
-rw-r--r-- | net/base/mime_sniffer_unittest.cc | 13 |
3 files changed, 17 insertions, 1 deletions
diff --git a/chrome/browser/resource_dispatcher_host.cc b/chrome/browser/resource_dispatcher_host.cc index 597abba..85a0fb8 100644 --- a/chrome/browser/resource_dispatcher_host.cc +++ b/chrome/browser/resource_dispatcher_host.cc @@ -1179,6 +1179,7 @@ bool ResourceDispatcherHost::BufferedEventHandler::KeepBuffering( // SniffMimeType() returns false if there is not enough data to determine // the mime type. However, even if it returns false, it returns a new type // that is probably better than the current one. + DCHECK(bytes_read_ < 512 /*kMaxBytesToSniff*/); if (!finished_) { buffering_ = true; return true; diff --git a/net/base/mime_sniffer.cc b/net/base/mime_sniffer.cc index 53e765e..da117e2 100644 --- a/net/base/mime_sniffer.cc +++ b/net/base/mime_sniffer.cc @@ -529,7 +529,9 @@ bool SniffMimeType(const char* content, size_t content_size, // We're not interested in sniffing these types for images and the like. // Instead, we're looking explicitly for a feed. If we don't find one we're // done and return early. - return SniffXML(content, content_size, result); + if (SniffXML(content, content_size, result)) + return true; + return content_size >= kMaxBytesToSniff; } // Now we look in our large table of magic numbers to see if we can find diff --git a/net/base/mime_sniffer_unittest.cc b/net/base/mime_sniffer_unittest.cc index 0ed87e8..caf258b 100644 --- a/net/base/mime_sniffer_unittest.cc +++ b/net/base/mime_sniffer_unittest.cc @@ -295,3 +295,16 @@ TEST(MimeSnifferTest, XMLTest) { } +// Test content which is >= 512 bytes, and includes no open angle bracket. +// http://code.google.com/p/chromium/issues/detail?id=3521 +TEST(MimeSnifferTest, XMLTestLargeNoAngledBracket) { + // Make a large input, with 600 bytes of "x". + std::string content; + content.resize(600); + std::fill(content.begin(), content.end(), 'x'); + + // content.size() >= kMaxBytesToSniff (512) so the sniff is unambiguous. + std::string mime_type; + EXPECT_TRUE(net::SniffMimeType(content.data(), content.size(), GURL(), + "text/xml", &mime_type)); +} |