summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorservolk <servolk@chromium.org>2015-09-04 16:35:41 -0700
committerCommit bot <commit-bot@chromium.org>2015-09-04 23:36:27 +0000
commitacfb7ffeaeec24f1e3e9e3cad38d93369133f08b (patch)
tree4b3fccf52c9f323b218a70a592408885f4bb3417 /media
parent15ca2651485573a51a32c260d501ff3d24c9770d (diff)
downloadchromium_src-acfb7ffeaeec24f1e3e9e3cad38d93369133f08b.zip
chromium_src-acfb7ffeaeec24f1e3e9e3cad38d93369133f08b.tar.gz
chromium_src-acfb7ffeaeec24f1e3e9e3cad38d93369133f08b.tar.bz2
Fixed avc1/avc3 codec id validation
According to RFC 6381 avc1/avc3 codec ids must be followed by 6 hexadecimal digits (see avcoti definition in RFC 6381). BUG=457076 Review URL: https://codereview.chromium.org/1318603010 Cr-Commit-Position: refs/heads/master@{#347529}
Diffstat (limited to 'media')
-rw-r--r--media/base/mime_util.cc11
1 files changed, 8 insertions, 3 deletions
diff --git a/media/base/mime_util.cc b/media/base/mime_util.cc
index 4b686cc..06445d7 100644
--- a/media/base/mime_util.cc
+++ b/media/base/mime_util.cc
@@ -510,10 +510,15 @@ static bool IsValidH264Level(const std::string& level_str) {
static bool ParseH264CodecID(const std::string& codec_id,
MimeUtil::Codec* codec,
bool* is_ambiguous) {
- // Make sure we have avc1.xxxxxx or avc3.xxxxxx
+ // Make sure we have avc1.xxxxxx or avc3.xxxxxx , where xxxxxx are hex digits
+ if (!base::StartsWith(codec_id, "avc1.", base::CompareCase::SENSITIVE) &&
+ !base::StartsWith(codec_id, "avc3.", base::CompareCase::SENSITIVE)) {
+ return false;
+ }
if (codec_id.size() != 11 ||
- (!base::StartsWith(codec_id, "avc1.", base::CompareCase::SENSITIVE) &&
- !base::StartsWith(codec_id, "avc3.", base::CompareCase::SENSITIVE))) {
+ !base::IsHexDigit(codec_id[5]) || !base::IsHexDigit(codec_id[6]) ||
+ !base::IsHexDigit(codec_id[7]) || !base::IsHexDigit(codec_id[8]) ||
+ !base::IsHexDigit(codec_id[9]) || !base::IsHexDigit(codec_id[10])) {
return false;
}