mirror of
https://github.com/roytam1/palemoon27.git
synced 2026-06-01 00:09:57 +00:00
Ensure we don't attempt to process garbage data
This commit is contained in:
@@ -692,13 +692,22 @@ void
|
||||
TrackBuffersManager::InitializationSegmentReceived()
|
||||
{
|
||||
MOZ_ASSERT(mParser->HasCompleteInitData());
|
||||
|
||||
int64_t endInit = mParser->InitSegmentRange().mEnd;
|
||||
if (mInputBuffer->Length() > mProcessedInput ||
|
||||
int64_t(mProcessedInput - mInputBuffer->Length()) > endInit) {
|
||||
// Something is not quite right with the data appended. Refuse it.
|
||||
RejectAppend(NS_ERROR_FAILURE, __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
mCurrentInputBuffer = new SourceBufferResource(mType);
|
||||
mCurrentInputBuffer->AppendData(mParser->InitData());
|
||||
uint32_t length =
|
||||
mParser->InitSegmentRange().mEnd - (mProcessedInput - mInputBuffer->Length());
|
||||
uint32_t length = endInit - (mProcessedInput - mInputBuffer->Length());
|
||||
if (mInputBuffer->Length() == length) {
|
||||
mInputBuffer = nullptr;
|
||||
} else {
|
||||
MOZ_RELEASE_ASSERT(length <= mInputBuffer->Length());
|
||||
mInputBuffer->RemoveElementsAt(0, length);
|
||||
}
|
||||
CreateDemuxerforMIMEType();
|
||||
|
||||
@@ -145,7 +145,7 @@ private:
|
||||
nsRefPtr<SourceBufferResource> mCurrentInputBuffer;
|
||||
nsRefPtr<MediaDataDemuxer> mInputDemuxer;
|
||||
// Length already processed in current media segment.
|
||||
uint32_t mProcessedInput;
|
||||
uint64_t mProcessedInput;
|
||||
|
||||
void OnDemuxerInitDone(nsresult);
|
||||
void OnDemuxerInitFailed(DemuxerFailureReason aFailure);
|
||||
|
||||
Reference in New Issue
Block a user