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

Commit 80d9064a 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 7dde1c8c
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) {