X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Fgdv.c;h=2ecbb535e7cb75ea4e0fca49a43f6e9a07d776c3;hb=704017d91ec8fbade0de072d222018c1a6013b70;hp=a69c349cab3c48abe60ceffd8f804b2a464369e7;hpb=1f1ec958f6c68a5ceafea206a99c895f62d0f3ec;p=ffmpeg diff --git a/libavformat/gdv.c b/libavformat/gdv.c index a69c349cab3..2ecbb535e7c 100644 --- a/libavformat/gdv.c +++ b/libavformat/gdv.c @@ -34,7 +34,7 @@ typedef struct GDVContext { unsigned pal[256]; } GDVContext; -static int gdv_read_probe(AVProbeData *p) +static int gdv_read_probe(const AVProbeData *p) { if (AV_RL32(p->buf) == 0x29111994) return AVPROBE_SCORE_MAX; @@ -86,6 +86,9 @@ static int gdv_read_header(AVFormatContext *ctx) vst->nb_frames = avio_rl16(pb); fps = avio_rl16(pb); + if (!fps) + return AVERROR_INVALIDDATA; + snd_flags = avio_rl16(pb); if (snd_flags & 1) { ast = avformat_new_stream(ctx, 0); @@ -179,7 +182,6 @@ static int gdv_read_packet(AVFormatContext *ctx, AVPacket *pkt) pal = av_packet_new_side_data(pkt, AV_PKT_DATA_PALETTE, AVPALETTE_SIZE); if (!pal) { - av_packet_unref(pkt); return AVERROR(ENOMEM); } memcpy(pal, gdv->pal, AVPALETTE_SIZE);