/*
* MOFLEX demuxer
+ * Copyright (c) 2015-2016 Florian Nouwt
+ * Copyright (c) 2017 Adib Surani
* Copyright (c) 2020 Paul B Mahol
*
* This file is part of FFmpeg.
}
pkt_size = pop_int(br, pb, 13) + 1;
+ if (pkt_size > m->size)
+ return AVERROR_INVALIDDATA;
packet = s->streams[stream_index]->priv_data;
if (!packet) {
avio_skip(pb, pkt_size);
m->in_block = 0;
- if (m->flags % 2 == 0)
+ if (m->flags % 2 == 0) {
+ if (m->size <= 0)
+ return AVERROR_INVALIDDATA;
avio_seek(pb, m->pos + m->size, SEEK_SET);
+ }
}
return AVERROR_EOF;
static int moflex_read_close(AVFormatContext *s)
{
for (int i = 0; i < s->nb_streams; i++) {
- AVPacket *packet = s->streams[i]->priv_data;
-
- av_packet_free(&packet);
- s->streams[i]->priv_data = 0;
+ av_packet_free((AVPacket **)&s->streams[i]->priv_data);
}
return 0;
}
-AVInputFormat ff_moflex_demuxer = {
+const AVInputFormat ff_moflex_demuxer = {
.name = "moflex",
.long_name = NULL_IF_CONFIG_SMALL("MobiClip MOFLEX"),
.priv_data_size = sizeof(MOFLEXDemuxContext),