Bug 1314533: [MSE] P4. Reject invalid webm block. r=gerald

An invalid webm block at this stage is either a non init segment or non media segment.

MozReview-Commit-ID: 46NrhCwqas1

--HG--
extra : rebase_source : b5be124fc0789cfe0fe757c5fb83f18a769a8bd4
This commit is contained in:
Jean-Yves Avenard 2016-11-04 02:16:53 +11:00
parent 5c340b140f
commit a7ef8c33da

View File

@ -140,12 +140,14 @@ public:
// 0x1654ae6b // -> One or more Tracks
// 0x1a45dfa3 // EBML
if (aData->Length() >= 4 &&
(*aData)[0] == 0x1a && (*aData)[1] == 0x45 && (*aData)[2] == 0xdf &&
if (aData->Length() < 4) {
return NS_ERROR_NOT_AVAILABLE;
}
if ((*aData)[0] == 0x1a && (*aData)[1] == 0x45 && (*aData)[2] == 0xdf &&
(*aData)[3] == 0xa3) {
return NS_OK;
}
return NS_ERROR_NOT_AVAILABLE;
return MediaResult(NS_ERROR_FAILURE, RESULT_DETAIL("Invalid webm content"));
}
MediaResult IsMediaSegmentPresent(MediaByteBuffer* aData) override
@ -163,18 +165,19 @@ public:
// 0x1654ae6b // -> One or more Tracks
// 0x1f43b675 // Cluster
if (aData->Length() >= 4 &&
(*aData)[0] == 0x1f && (*aData)[1] == 0x43 && (*aData)[2] == 0xb6 &&
if (aData->Length() < 4) {
return NS_ERROR_NOT_AVAILABLE;
}
if ((*aData)[0] == 0x1f && (*aData)[1] == 0x43 && (*aData)[2] == 0xb6 &&
(*aData)[3] == 0x75) {
return NS_OK;
}
// 0x1c53bb6b // Cues
if (aData->Length() >= 4 &&
(*aData)[0] == 0x1c && (*aData)[1] == 0x53 && (*aData)[2] == 0xbb &&
if ((*aData)[0] == 0x1c && (*aData)[1] == 0x53 && (*aData)[2] == 0xbb &&
(*aData)[3] == 0x6b) {
return NS_OK;
}
return NS_ERROR_NOT_AVAILABLE;
return MediaResult(NS_ERROR_FAILURE, RESULT_DETAIL("Invalid webm content"));
}
bool ParseStartAndEndTimestamps(MediaByteBuffer* aData,