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

Commit f3dadf22 authored by Andreas Huber's avatar Andreas Huber
Browse files

Content found in the wild violated the MPEG4 systems specs

but other players apparently worked around it as well, so we do to.

Change-Id: I8269d2344b010d1d704028c8a9c05bddab53828d
related-to-bug: 5049979
parent 8ebe5be6
Loading
Loading
Loading
Loading
+19 −1
Original line number Diff line number Diff line
@@ -14,6 +14,10 @@
 * limitations under the License.
 */

//#define LOG_NDEBUG 0
#define LOG_TAG "ESDS"
#include <utils/Log.h>

#include "include/ESDS.h"

#include <string.h>
@@ -87,6 +91,8 @@ status_t ESDS::skipDescriptorHeader(
    }
    while (more);

    LOGV("tag=0x%02x data_size=%d", *tag, *data_size);

    if (*data_size > size) {
        return ERROR_MALFORMED;
    }
@@ -146,6 +152,18 @@ status_t ESDS::parseESDescriptor(size_t offset, size_t size) {
    if (OCRstreamFlag) {
        offset += 2;
        size -= 2;

        if ((offset >= size || mData[offset] != kTag_DecoderConfigDescriptor)
                && offset - 2 < size
                && mData[offset - 2] == kTag_DecoderConfigDescriptor) {
            // Content found "in the wild" had OCRstreamFlag set but was
            // missing OCR_ES_Id, the decoder config descriptor immediately
            // followed instead.
            offset -= 2;
            size += 2;

            LOGW("Found malformed 'esds' atom, ignoring missing OCR_ES_Id.");
        }
    }

    if (offset >= size) {