diff options
author | servolk <servolk@chromium.org> | 2015-09-04 16:35:41 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-09-04 23:36:27 +0000 |
commit | acfb7ffeaeec24f1e3e9e3cad38d93369133f08b (patch) | |
tree | 4b3fccf52c9f323b218a70a592408885f4bb3417 /media | |
parent | 15ca2651485573a51a32c260d501ff3d24c9770d (diff) | |
download | chromium_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.cc | 11 |
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; } |