Chromium Code Reviews| Index: net/base/mime_sniffer.cc |
| =================================================================== |
| --- net/base/mime_sniffer.cc (revision 70720) |
| +++ net/base/mime_sniffer.cc (working copy) |
| @@ -146,6 +146,8 @@ |
| MAGIC_NUMBER("image/tiff", "II*") |
| MAGIC_NUMBER("image/tiff", "MM\x00*") |
| MAGIC_NUMBER("audio/mpeg", "ID3") |
| + MAGIC_NUMBER("image/webp", "RIFF....WEBPVP8 ") |
| + MAGIC_NUMBER("video/webm", "\x1A\x45\xDF\xA3") |
| // TODO(abarth): we don't handle partial byte matches yet |
| // MAGIC_NUMBER("video/mpeg", "\x00\x00\x01\xB") |
| // MAGIC_NUMBER("audio/mpeg", "\xFF\xE") |
| @@ -215,6 +217,21 @@ |
| return counter; |
| } |
| +static bool MagicCmp(const char* magic_entry, const char* content, size_t len) { |
| + bool same = true; |
| + while (len && same) { |
| + if (!*content && !magic_entry) { |
|
Tom Finegan
2011/01/11 18:51:11
I think you want !*magic_entry here; at least if y
fbarchard1
2011/01/11 19:20:11
Done.
|
| + break; |
| + same = (*magic_entry == *content) || (*magic_entry == '.' && *content); |
| + if (!*content || !magic_entry) |
|
Tom Finegan
2011/01/11 18:51:11
!*magic_entry again, assuming I'm correct above an
fbarchard1
2011/01/11 19:20:11
Done.
|
| + break; |
| + ++magic_entry; |
| + ++content; |
| + --len; |
| + } |
| + return same; |
| +} |
| + |
| static bool MatchMagicNumber(const char* content, size_t size, |
| const MagicNumber* magic_entry, |
| std::string* result) { |
| @@ -239,7 +256,7 @@ |
| } |
| } else { |
| if (size >= len) |
| - match = (memcmp(magic_entry->magic, content, len) == 0); |
| + match = MagicCmp(magic_entry->magic, content, len); |
|
Tom Finegan
2011/01/11 18:51:11
Not that I have any major issue with being more sp
fbarchard1
2011/01/11 19:20:11
Done. Added comments
|
| } |
| if (match) { |
| @@ -251,7 +268,8 @@ |
| static bool CheckForMagicNumbers(const char* content, size_t size, |
| const MagicNumber* magic, size_t magic_len, |
| - base::Histogram* counter, std::string* result) { |
| + base::Histogram* counter, |
| + std::string* result) { |
| for (size_t i = 0; i < magic_len; ++i) { |
| if (MatchMagicNumber(content, size, &(magic[i]), result)) { |
| if (counter) counter->Add(static_cast<int>(i)); |