avformat/utils: unref packet on AVInputFormat.read_packet() failure

Demuxers may have allocated a packet before encountering an error and aborting.

Fixes ticket #8150

Signed-off-by: James Almer <jamrial@gmail.com>
pull/323/head
James Almer 5 years ago
parent 66d5e43b99
commit bae8844e35
  1. 2
      libavformat/utils.c

@ -854,6 +854,8 @@ int ff_read_packet(AVFormatContext *s, AVPacket *pkt)
av_init_packet(pkt); av_init_packet(pkt);
ret = s->iformat->read_packet(s, pkt); ret = s->iformat->read_packet(s, pkt);
if (ret < 0) { if (ret < 0) {
av_packet_unref(pkt);
/* Some demuxers return FFERROR_REDO when they consume /* Some demuxers return FFERROR_REDO when they consume
data and discard it (ignored streams, junk, extradata). data and discard it (ignored streams, junk, extradata).
We must re-call the demuxer to get the real packet. */ We must re-call the demuxer to get the real packet. */

Loading…
Cancel
Save