summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authordalecurtis@google.com <dalecurtis@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-07 02:18:58 +0000
committerdalecurtis@google.com <dalecurtis@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-07 02:18:58 +0000
commitab1fe99b063542657a7c6fa507ff225c00a3545b (patch)
tree36b81581f8cc6436099b2d51145a4f21fb4d9897 /media
parent53fb556dba0e3621224b9e13881fd3d03e14b2fb (diff)
downloadchromium_src-ab1fe99b063542657a7c6fa507ff225c00a3545b.zip
chromium_src-ab1fe99b063542657a7c6fa507ff225c00a3545b.tar.gz
chromium_src-ab1fe99b063542657a7c6fa507ff225c00a3545b.tar.bz2
Roll FFmpeg for security fixes.
Pulls in the following fixes: 70e76e2 mpegprobe: fix misdetection of mp3 a9511ce dsputil: make add_hfyu_left_prediction_sse4() support unaligned src. 12ba355 matroskadec: check element size against stream limit in ebml_parse_elem() 9c06b7f oggdec: Initialize stream index to -1 in ogg_packet. fd73a17 oggdec: simplify start time calculation code. 6b063c8 oggdec: check stream index before using it in ogg_get_length() 7274a3f mov: dont clip timestamps at 0 Also adds the test case for 140165 which I forgot to add when fixing that issue. Test case exposes an issue with a recent CHECK in the audio decoder when we recieve a buffer without timestamps. I've changed this into an if check + decoder error. The AUDIO_GAMING* hashes have changed since acolwell landed a change which strips frames with negative timestamps. BUG=140647 TEST=valgrind+ffmpeg_regression_tests Review URL: https://chromiumcodereview.appspot.com/10829204 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@150239 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media')
-rw-r--r--media/ffmpeg/ffmpeg_regression_tests.cc42
-rw-r--r--media/filters/ffmpeg_audio_decoder.cc13
2 files changed, 32 insertions, 23 deletions
diff --git a/media/ffmpeg/ffmpeg_regression_tests.cc b/media/ffmpeg/ffmpeg_regression_tests.cc
index 00a6aa3..7b2df81 100644
--- a/media/ffmpeg/ffmpeg_regression_tests.cc
+++ b/media/ffmpeg/ffmpeg_regression_tests.cc
@@ -97,7 +97,7 @@ FFMPEG_TEST_CASE(Cr47325, "security/47325.mp4", PIPELINE_OK, PIPELINE_OK,
"511bbbfd42f5bedc1a11670a5b3299c7");
FFMPEG_TEST_CASE(Cr47761, "content/crbug47761.ogg", PIPELINE_OK, PIPELINE_OK,
kNullHash,
- "f281adf4c7531d1664e92eb05bf10aa8");
+ "7790097fe63d2e95bcc8d4f1ac92168d");
FFMPEG_TEST_CASE(Cr50045, "content/crbug50045.mp4", PIPELINE_OK, PIPELINE_OK,
"c345e9ef9ebfc6bfbcbe3f0ddc3125ba",
"d429bc20b7f1eafd0d8179fd128a94ed");
@@ -106,7 +106,7 @@ FFMPEG_TEST_CASE(Cr62127, "content/crbug62127.webm",
"a064b2776fc5aef3e9cba47967a75db9", kNullHash);
FFMPEG_TEST_CASE(Cr93620, "security/93620.ogg", PIPELINE_OK, PIPELINE_OK,
kNullHash,
- "a12b7a96d02f3ab68532995464275682");
+ "a9a6d483666f3dc029a58a0fd1544002");
FFMPEG_TEST_CASE(Cr100492, "security/100492.webm", DECODER_ERROR_NOT_SUPPORTED,
DECODER_ERROR_NOT_SUPPORTED, kNullHash, kNullHash);
FFMPEG_TEST_CASE(Cr100543, "security/100543.webm", PIPELINE_OK, PIPELINE_OK,
@@ -139,6 +139,12 @@ FFMPEG_TEST_CASE(Cr123481, "security/123481.ogv", PIPELINE_OK,
FFMPEG_TEST_CASE(Cr132779, "security/132779.webm",
DEMUXER_ERROR_COULD_NOT_PARSE, DEMUXER_ERROR_COULD_NOT_PARSE,
kNullHash, kNullHash);
+FFMPEG_TEST_CASE(Cr140165, "security/140165.ogg", PIPELINE_ERROR_DECODE,
+ PIPELINE_ERROR_DECODE, kNullHash,
+ "bd42757e42bdada18cb9441ee4ef8313");
+FFMPEG_TEST_CASE(Cr140647, "security/140647.ogv",
+ DECODER_ERROR_NOT_SUPPORTED, DECODER_ERROR_NOT_SUPPORTED,
+ kNullHash, kNullHash);
// General MKV test cases.
FFMPEG_TEST_CASE(MKV_0, "security/nested_tags_lang.mka.627.628", PIPELINE_OK,
@@ -246,38 +252,38 @@ FFMPEG_TEST_CASE(AUDIO_GAMING_0, "content/gaming/a_220_00.mp3", PIPELINE_OK,
FFMPEG_TEST_CASE(AUDIO_GAMING_1, "content/gaming/a_220_00_v2.ogg", PIPELINE_OK,
PIPELINE_OK, kNullHash, "6a79b3c593609f3bdfbea3727c658c73");
FFMPEG_TEST_CASE(AUDIO_GAMING_2, "content/gaming/ai_laser1.ogg", PIPELINE_OK,
- PIPELINE_OK, kNullHash, "0d1e07b4374f54e3ae18dc15d7497183");
+ PIPELINE_OK, kNullHash, "f587bfce23072efaec3d78316a5f2af1");
FFMPEG_TEST_CASE(AUDIO_GAMING_3, "content/gaming/ai_laser2.ogg", PIPELINE_OK,
- PIPELINE_OK, kNullHash, "46dfe271f7e7b72225e754dd7ab8ad1c");
+ PIPELINE_OK, kNullHash, "5dc6dab55a2f80cb17be519d62bd2781");
FFMPEG_TEST_CASE(AUDIO_GAMING_4, "content/gaming/ai_laser3.ogg", PIPELINE_OK,
- PIPELINE_OK, kNullHash, "ef018d911c9941b778e13e1af5bec449");
+ PIPELINE_OK, kNullHash, "5f913060d01365e9999f81f550f4823f");
FFMPEG_TEST_CASE(AUDIO_GAMING_5, "content/gaming/ai_laser4.ogg", PIPELINE_OK,
- PIPELINE_OK, kNullHash, "14ff475a7355826077ffad191cc09665");
+ PIPELINE_OK, kNullHash, "43be1bdfaa73d0f2cfecca0f4664fe1d");
FFMPEG_TEST_CASE(AUDIO_GAMING_6, "content/gaming/ai_laser5.ogg", PIPELINE_OK,
- PIPELINE_OK, kNullHash, "351cd543f0a001b2eb5ca5fad6e384b9");
+ PIPELINE_OK, kNullHash, "786af83e7ad2de3c1c31270e7d401a58");
FFMPEG_TEST_CASE(AUDIO_GAMING_7, "content/gaming/footstep1.ogg", PIPELINE_OK,
- PIPELINE_OK, kNullHash, "6edde5a895c900cf7dcd68e56abf0b0b");
+ PIPELINE_OK, kNullHash, "2a4a41794b2e0330eb89ac2dce39db41");
FFMPEG_TEST_CASE(AUDIO_GAMING_8, "content/gaming/footstep3.ogg", PIPELINE_OK,
- PIPELINE_OK, kNullHash, "59c29eb093a3a6b4bbe5b269837914b9");
+ PIPELINE_OK, kNullHash, "294d37789cd48c2c043362742f67efd3");
FFMPEG_TEST_CASE(AUDIO_GAMING_9, "content/gaming/footstep4.ogg", PIPELINE_OK,
- PIPELINE_OK, kNullHash, "3bd5c2b4618f189bc49f7cfd5dae91a9");
+ PIPELINE_OK, kNullHash, "45cbcc62aff633ef3b5b504db8a6f57c");
FFMPEG_TEST_CASE(AUDIO_GAMING_10, "content/gaming/laser1.ogg", PIPELINE_OK,
- PIPELINE_OK, kNullHash, "199f2ccd92c278c4203665dba752b6ef");
+ PIPELINE_OK, kNullHash, "7c85c120e78c1b4688517191d368123f");
FFMPEG_TEST_CASE(AUDIO_GAMING_11, "content/gaming/laser2.ogg", PIPELINE_OK,
- PIPELINE_OK, kNullHash, "a1cdedcda4edabded9c4197a374b53dd");
+ PIPELINE_OK, kNullHash, "a2a5af1fd64b4451a2a8ae50d94466c2");
FFMPEG_TEST_CASE(AUDIO_GAMING_12, "content/gaming/laser3.ogg", PIPELINE_OK,
- PIPELINE_OK, kNullHash, "6ce272b185e3e6309b9878b543d1b83b");
+ PIPELINE_OK, kNullHash, "7d268f3271670e274b0bed923af4de58");
FFMPEG_TEST_CASE(AUDIO_GAMING_13, "content/gaming/leg1.ogg", PIPELINE_OK,
- PIPELINE_OK, kNullHash, "7a426c86203cf6073e8c08b23f5ee57d");
+ PIPELINE_OK, kNullHash, "c2b9710bc58eb0d3d48558bbf60cecce");
FFMPEG_TEST_CASE(AUDIO_GAMING_14, "content/gaming/leg2.ogg", PIPELINE_OK,
- PIPELINE_OK, kNullHash, "d2f81558cea012adbc4cc8aafdbbfa55");
+ PIPELINE_OK, kNullHash, "d9e28366eec434b6198acd4b6ab8854e");
FFMPEG_TEST_CASE(AUDIO_GAMING_15, "content/gaming/leg3.ogg", PIPELINE_OK,
- PIPELINE_OK, kNullHash, "9665107f7be378111b9e1928f6ac6dce");
+ PIPELINE_OK, kNullHash, "80e5314b9bda1a3d83d09cc1d89127b1");
FFMPEG_TEST_CASE(AUDIO_GAMING_16, "content/gaming/lock_on.ogg", PIPELINE_OK,
- PIPELINE_OK, kNullHash, "2193dc2c9c811f96950a8615f7bf47e9");
+ PIPELINE_OK, kNullHash, "1d64e8b2642c5e39c40c3a40f7f28dcc");
FFMPEG_TEST_CASE(AUDIO_GAMING_17, "content/gaming/enemy_lock_on.ogg",
PIPELINE_OK, PIPELINE_OK, kNullHash,
- "d9d2d8b26335efc8e5589c5c44d2a979");
+ "937fd55ea90cfecea945b3b44ca314bf");
FFMPEG_TEST_CASE(AUDIO_GAMING_18, "content/gaming/rocket_launcher.mp3",
PIPELINE_OK, PIPELINE_OK, kNullHash,
"05289a50acd15fa1357fe6234f82c3fe");
diff --git a/media/filters/ffmpeg_audio_decoder.cc b/media/filters/ffmpeg_audio_decoder.cc
index f8cc1d5..903edba 100644
--- a/media/filters/ffmpeg_audio_decoder.cc
+++ b/media/filters/ffmpeg_audio_decoder.cc
@@ -178,11 +178,14 @@ void FFmpegAudioDecoder::DoDecodeBuffer(
return;
}
- // Make sure we are notified if http://crbug.com/49709 returns.
- CHECK(input->GetTimestamp() != kNoTimestamp() ||
- output_timestamp_base_ != kNoTimestamp() ||
- input->IsEndOfStream())
- << "First buffers received don't have timestamps!";
+ // Make sure we are notified if http://crbug.com/49709 returns. Issue also
+ // occurs with some damaged files.
+ if (!input->IsEndOfStream() && input->GetTimestamp() == kNoTimestamp() &&
+ output_timestamp_base_ == kNoTimestamp()) {
+ DVLOG(1) << "Received a buffer without timestamps!";
+ base::ResetAndReturn(&read_cb_).Run(kDecodeError, NULL);
+ return;
+ }
bool is_vorbis = codec_context_->codec_id == CODEC_ID_VORBIS;
if (!input->IsEndOfStream()) {