summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/binding/SinfParser.cpp
diff options
context:
space:
mode:
authortrav90 <travawine@palemoon.org>2018-07-21 19:57:42 -0500
committertrav90 <travawine@palemoon.org>2018-07-21 19:57:42 -0500
commit0adebd32d9edaf37ef2396408d4fd76a9b255872 (patch)
tree45266f5d9339ee4d8747f7c99858b5261ad8f1da /media/libstagefright/binding/SinfParser.cpp
parentb3d0eb648ba86eeae61a383fcd811a579497d4f9 (diff)
downloadUXP-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.cpp24
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);
}
}