Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c51db0a6 authored by Lajos Molnar's avatar Lajos Molnar
Browse files

stagefright: handle corrupt matroska files gracefully

Bug: 13693438
Bug: 13744158
Change-Id: I557595b5b5d4a20934f79e00a622b06d13378223
parent a1df816c
Loading
Loading
Loading
Loading
+13 −5
Original line number Diff line number Diff line
@@ -657,14 +657,22 @@ MatroskaExtractor::MatroskaExtractor(const sp<DataSource> &source)
        return;
    }

    // from mkvparser::Segment::Load(), but stop at first cluster
    ret = mSegment->ParseHeaders();
    CHECK_EQ(ret, 0);

    if (ret == 0) {
        long len;
        ret = mSegment->LoadCluster(pos, len);
    CHECK_EQ(ret, 0);
        if (ret >= 1) {
            // no more clusters
            ret = 0;
        }
    } else if (ret > 0) {
        ret = mkvparser::E_BUFFER_NOT_FULL;
    }

    if (ret < 0) {
        ALOGW("Corrupt %s source: %s", mIsWebm ? "webm" : "matroska",
                uriDebugString(mDataSource->getUri()).c_str());
        delete mSegment;
        mSegment = NULL;
        return;