diff options
author | trav90 <travawine@palemoon.org> | 2018-07-21 19:57:42 -0500 |
---|---|---|
committer | trav90 <travawine@palemoon.org> | 2018-07-21 19:57:42 -0500 |
commit | 0adebd32d9edaf37ef2396408d4fd76a9b255872 (patch) | |
tree | 45266f5d9339ee4d8747f7c99858b5261ad8f1da /media/libstagefright/binding/SinfParser.cpp | |
parent | b3d0eb648ba86eeae61a383fcd811a579497d4f9 (diff) | |
download | UXP-0adebd32d9edaf37ef2396408d4fd76a9b255872.tar UXP-0adebd32d9edaf37ef2396408d4fd76a9b255872.tar.gz UXP-0adebd32d9edaf37ef2396408d4fd76a9b255872.tar.lz UXP-0adebd32d9edaf37ef2396408d4fd76a9b255872.tar.xz UXP-0adebd32d9edaf37ef2396408d4fd76a9b255872.zip |
Rework MoofParser to return an error when the underlying BufferReader returns an error.
Diffstat (limited to 'media/libstagefright/binding/SinfParser.cpp')
-rw-r--r-- | media/libstagefright/binding/SinfParser.cpp | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/media/libstagefright/binding/SinfParser.cpp b/media/libstagefright/binding/SinfParser.cpp index 5cf3aa553..5f3a2889e 100644 --- a/media/libstagefright/binding/SinfParser.cpp +++ b/media/libstagefright/binding/SinfParser.cpp @@ -39,8 +39,13 @@ SinfParser::ParseSchm(Box& aBox) return; } - mozilla::Unused << reader->ReadU32(); // flags -- ignore - mSinf.mDefaultEncryptionType = reader->ReadU32(); + uint32_t type; + if (!reader->Skip(4) || + !reader->ReadU32(type)) { + NS_WARNING("Failed to parse schm data"); + return; + } + mSinf.mDefaultEncryptionType = type; } void @@ -62,11 +67,16 @@ SinfParser::ParseTenc(Box& aBox) return; } - mozilla::Unused << reader->ReadU32(); // flags -- ignore - - uint32_t isEncrypted = reader->ReadU24(); - mSinf.mDefaultIVSize = reader->ReadU8(); - memcpy(mSinf.mDefaultKeyID, reader->Read(16), 16); + uint32_t isEncrypted; + const uint8_t* key; + if (!reader->Skip(4) || // flags -- ignore + !reader->ReadU24(isEncrypted) || + !reader->ReadU8(mSinf.mDefaultIVSize) || + !reader->Read(16, &key)) { + NS_WARNING("Failed to parse tenc data"); + return; + } + memcpy(mSinf.mDefaultKeyID, key, 16); } } |