ffmpeg/libavformat
Andreas Rheinhardt 48ae235848 avformat/matroskadec: Fix use-after-free when demuxing ProRes
ProRes in Matroska is supposed to not contain the first atom header
(containing a size field and the tag "icpf") and therefore the Matroska
demuxer has to recreate it; this involves an allocation and copy, of
course. Whether the old buffer (containing the data without the atom
header) needs to be freed or not depends upon whether it is what was
directly read (in which case it is owned by an AVBuffer) or whether it
has been allocated when reversing the track's content compression (e.g.
zlib compression) that Matroska supports.

So there are three pointers involved: The one pointing to the directly
read data (owned by the AVBuffer), the one pointing to the currently
valid data (which coincides with the former if no content compression
needed to be reverted) and the one pointing to the new data with the
first atom header. The check for whether to free the second of these is
simply whether the first two are different.

This works mostly, but there is a complication: Some muxers don't strip
the first atom header away and in this case, it is also not reinserted
and no new buffer is allocated; instead, the second and the third
pointers agree. In this case, one must never free the second buffer.
Yet it is currently done if the track is e.g. zlib compressed.
This commit fixes this.

This is a regression since b8e75a2a.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Signed-off-by: James Almer <jamrial@gmail.com>
(cherry picked from commit af50f0a515)
2019-12-13 12:01:20 -03:00
..
tests
.gitignore
3dostr.c
4xm.c
a64.c
aacdec.c avformat/aacdec: resync to the next adts frame on invalid data instead of aborting 2019-07-20 21:47:55 -03:00
aadec.c avformat/aadec: Check for scanf() failure 2019-04-24 17:05:02 +02:00
ac3dec.c avformat/rawdec: Make the raw packet size configurable 2019-07-17 23:18:50 +02:00
acm.c avformat/rawdec: Make the raw packet size configurable 2019-07-17 23:18:50 +02:00
act.c
adp.c
ads.c
adtsenc.c
adxdec.c
aea.c
afc.c
aiff.h
aiffdec.c
aiffenc.c
aixdec.c
allformats.c avformat/ifv: added support for ifv cctv files 2019-06-21 22:02:14 +10:00
amr.c
anm.c
apc.c
ape.c
apetag.c avformat/apetag: tag values are unsigned 2019-04-19 13:22:54 -03:00
apetag.h
apngdec.c
apngenc.c
aptxdec.c
aqtitledec.c
asf.c
asf.h
asfcrypt.c
asfcrypt.h
asfdec_f.c
asfdec_o.c
asfenc.c
assdec.c
assenc.c
ast.c
ast.h
astdec.c
astenc.c
async.c
au.c
audiointerleave.c
audiointerleave.h
av1.c avformat/av1: Fix leak of dynamic buffer in case of parsing failure 2019-12-06 21:33:47 -03:00
av1.h avformat/av1: combine high_bitdepth and twelve_bit into a single bitdepth value 2019-08-05 15:02:45 -03:00
avc.c avformat/mxfenc: support XAVC long gop 2019-05-20 11:58:12 -07:00
avc.h avformat/mxfenc: support XAVC long gop 2019-05-20 11:58:12 -07:00
avformat.h avformat: Don't suggest deprecated function 2019-07-13 14:07:59 -03:00
avformatres.rc
avi.h
avidec.c avformat/avidec: add support for recognizing HEVC fourcc when demuxing 2019-09-02 22:06:00 +02:00
avienc.c
avio_internal.h
avio.c
avio.h
aviobuf.c lavf/avio: remove ffio_open2_wrapper function 2019-07-21 10:05:40 +08:00
avisynth.c avisynth: adapt 239d02eff3 to dlsym 2019-05-04 12:03:24 +05:30
avlanguage.c
avlanguage.h
avr.c
avs.c
bethsoftvid.c
bfi.c
bink.c
bintext.c
bit.c
bluray.c
bmv.c
boadec.c
brstm.c
c93.c
cache.c avformat/cache - delete cache file after closing handle 2019-05-25 00:21:26 +05:30
caf.c
caf.h
cafdec.c
cafenc.c
cavsvideodec.c
cdg.c
cdxl.c
chromaprint.c
cinedec.c
codec2.c
concat.c
concatdec.c
crcenc.c
crypto.c
cutils.c
dash.c
dash.h
dashdec.c avformat/dashdec: fix code style and remove some empty line 2019-07-10 17:26:33 +08:00
dashenc.c avformat/dashenc: fix writing the AV1 codec string in mp4 mode 2019-08-05 15:02:55 -03:00
data_uri.c
dauddec.c
daudenc.c
davs2.c
dcstr.c
dfa.c
dhav.c
diracdec.c
dnxhddec.c
dsfdec.c
dsicin.c
dss.c
dtsdec.c avformat/rawdec: Make the raw packet size configurable 2019-07-17 23:18:50 +02:00
dtshddec.c
dump.c lavf/dump: More disposition flag dump 2019-07-03 10:35:16 +08:00
dv.c
dv.h
dvbsub.c
dvbtxt.c
dvenc.c
dxa.c
eacdata.c
electronicarts.c
epafdec.c
ffmeta.h
ffmetadec.c
ffmetaenc.c
fifo_test.c
fifo.c
file_open.c
file.c
filmstripdec.c
filmstripenc.c
fitsdec.c
fitsenc.c
flac_picture.c
flac_picture.h
flacdec.c avformat/rawdec: Make the raw packet size configurable 2019-07-17 23:18:50 +02:00
flacenc_header.c
flacenc.c
flacenc.h
flic.c
flv.h
flvdec.c
flvenc.c lavf/flvenc: add automatic bitstream filtering 2019-06-25 10:45:47 +08:00
format.c
framecrcenc.c
framehash.c
frmdec.c
fsb.c
ftp.c
g722.c avformat/rawdec: Make the raw packet size configurable 2019-07-17 23:18:50 +02:00
g723_1.c
g726.c
g729dec.c
gdv.c
genh.c
gif.c avformat/gif: abort early if nothing was written yet 2019-05-29 10:57:18 +02:00
gifdec.c
golomb_tab.c
gopher.c
gsmdec.c
gxf.c
gxf.h
gxfenc.c
h261dec.c
h263dec.c
h264dec.c
hashenc.c
hcom.c
hdsenc.c
hevc.c avformat/mxfenc: support XAVC long gop 2019-05-20 11:58:12 -07:00
hevc.h
hevcdec.c
hls.c lavf/hls: More log message 2019-06-14 13:21:38 +08:00
hlsenc.c avformat/hlsenc: use old way for fragment mp4 in HLS PUT method 2019-07-15 21:56:04 +08:00
hlsplaylist.c avformat/hlsenc: add EXT-X-I-FRAMES-ONLY tag support 2019-06-14 10:53:23 +08:00
hlsplaylist.h avformat/hlsenc: add EXT-X-I-FRAMES-ONLY tag support 2019-06-14 10:53:23 +08:00
hlsproto.c
hnm.c
http.c avformat/http: change error message from numeric code to string 2019-07-11 09:35:31 +08:00
http.h
httpauth.c
httpauth.h
icecast.c
icodec.c avformat/icodec: Free ico->images on error paths 2019-06-21 18:28:00 +02:00
icoenc.c
id3v1.c
id3v1.h
id3v2.c
id3v2.h
id3v2enc.c avformat/id3v2enc: fix bug, CTOC flags take only one byte 2019-06-13 23:12:51 +02:00
idcin.c
idroqdec.c
idroqenc.c
iff.c
ifv.c avformat/ifv: Check for EOF in read_index() 2019-07-19 01:23:23 +02:00
ilbc.c
img2_alias_pix.c
img2_brender_pix.c
img2.c avcodec/tiff: Recognize DNG/CinemaDNG images 2019-05-30 19:27:05 +02:00
img2.h
img2dec.c avformat/img2dec: Fix probe_buffer leak in ff_img_read_header() 2019-06-25 13:30:09 +02:00
img2enc.c
ingenientdec.c
internal.h lavf/avio: remove ffio_open2_wrapper function 2019-07-21 10:05:40 +08:00
ip.c
ip.h
ipmovie.c
ircam.c
ircam.h
ircamdec.c
ircamenc.c
isom.c avcodec/magicyuv: add support for recently added YUV444P10 2019-07-11 16:53:09 +02:00
isom.h
iss.c
iv8.c
ivfdec.c
ivfenc.c
jacosubdec.c avformat/jacosubdec: Fix timeres to 1/100 units convertion overflow 2019-06-21 18:28:00 +02:00
jacosubenc.c
jvdec.c
latmenc.c
libavformat.v
libgme.c
libmodplug.c
libopenmpt.c
librtmp.c
libsmbclient.c
libsrt.c
libssh.c
lmlm4.c
loasdec.c avformat/rawdec: Make the raw packet size configurable 2019-07-17 23:18:50 +02:00
log2_tab.c
lrc.c
lrc.h
lrcdec.c
lrcenc.c
lvfdec.c
lxfdec.c
m4vdec.c
Makefile avformat/ifv: added support for ifv cctv files 2019-06-21 22:02:14 +10:00
matroska.c
matroska.h
matroskadec.c avformat/matroskadec: Fix use-after-free when demuxing ProRes 2019-12-13 12:01:20 -03:00
matroskaenc.c avformat/matroskaenc: Reduce usage of ebml_master 2019-05-08 13:02:30 -03:00
md5proto.c
metadata.c
metadata.h
mgsts.c
microdvddec.c avformat/microdvddec: skip empty lines 2019-04-27 12:57:18 +02:00
microdvdenc.c
mj2kdec.c
mkvtimestamp_v2.c
mlpdec.c avformat/rawdec: Make the raw packet size configurable 2019-07-17 23:18:50 +02:00
mlvdec.c
mm.c
mmf.c
mms.c
mms.h
mmsh.c
mmst.c
mov_chan.c
mov_chan.h
mov_esds.c
mov.c avformat/mov: Set fragment.found_tfhd only after TFHD has been parsed 2019-06-25 13:30:09 +02:00
movenc.c aformat/movenc: add missing padding to output track extradata 2019-09-26 16:02:39 -03:00
movenc.h
movenccenc.c
movenccenc.h
movenchint.c
mp3dec.c
mp3enc.c avformat/mp3enc: Avoid SEEK_END as it is unsupported 2019-05-27 19:01:38 +02:00
mpc8.c
mpc.c avformat/mpc: deallocate frames array on errors 2019-08-04 21:16:28 +02:00
mpeg.c
mpeg.h
mpegenc.c avformat/mpegenc - reject unsupported audio streams 2019-04-22 21:25:55 +05:30
mpegts.c avformat/mpegts: Check if ready on SCTE reception 2019-09-03 21:56:07 +02:00
mpegts.h
mpegtsenc.c
mpegvideodec.c
mpjpeg.c
mpjpegdec.c
mpl2dec.c
mpsubdec.c
msf.c
msnwc_tcp.c
mtaf.c
mtv.c
musx.c
mux.c avformat/mux: correct error msg for when BSF filtering fails 2019-07-20 15:41:28 +05:30
mvdec.c
mvi.c
mxf.c
mxf.h avformat/mxfenc: support XAVC long gop 2019-05-20 11:58:12 -07:00
mxfdec.c avformat/mxfdec: do not ignore bad size errors 2019-08-22 22:23:03 +02:00
mxfenc.c avformat/mxfenc: fix index byte count in partition header 2019-07-22 23:27:11 +02:00
mxg.c
ncdec.c
network.c
network.h
nistspheredec.c
nspdec.c
nsvdec.c
nullenc.c
nut.c avformat/nut: add cpia codec 2019-06-10 21:35:20 +02:00
nut.h
nutdec.c
nutenc.c
nuv.c
oggdec.c
oggdec.h
oggenc.c
oggparsecelt.c
oggparsedaala.c
oggparsedirac.c
oggparseflac.c
oggparseogm.c avformat/oggparseogm: sync avctx w/ codecpar 2019-06-25 14:09:40 -03:00
oggparseopus.c
oggparseskeleton.c
oggparsespeex.c
oggparsetheora.c
oggparsevorbis.c lavf/oggparsevorbis: Fix change the case of metadata keys issue 2019-04-22 23:24:42 +08:00
oggparsevp8.c
oma.c
oma.h
omadec.c
omaenc.c
options_table.h
options.c
os_support.c
os_support.h
paf.c
pcm.c
pcm.h
pcmdec.c
pcmenc.c
pjsdec.c
pmpdec.c
prompeg.c
protocols.c
psxstr.c
pva.c
pvfdec.c
qcp.c
qtpalette.c
qtpalette.h
r3d.c
rawdec.c avformat/rawdec: Make the raw packet size configurable 2019-07-17 23:18:50 +02:00
rawdec.h avformat/rawdec: Make the raw packet size configurable 2019-07-17 23:18:50 +02:00
rawenc.c lavf/rawenc: Only accept the appropriate stream type for raw muxers. 2019-09-06 16:25:05 -03:00
rawenc.h
rawutils.c
rawvideodec.c
rdt.c
rdt.h
realtextdec.c avformat/realtextdec: free queue on error 2019-09-04 20:26:35 +02:00
redspark.c
replaygain.c
replaygain.h
riff.c avformat/avidec: add support for recognizing HEVC fourcc when demuxing 2019-09-02 22:06:00 +02:00
riff.h avformat/avidec: add support for recognizing HEVC fourcc when demuxing 2019-09-02 22:06:00 +02:00
riffdec.c
riffenc.c
rl2.c
rm.c
rm.h
rmdec.c
rmenc.c
rmsipr.c
rmsipr.h
rpl.c avformat/rpl: Replace strcpy with av_strlcpy 2019-07-10 12:54:57 +02:00
rsd.c
rso.c
rso.h
rsodec.c
rsoenc.c
rtmp.h
rtmpcrypt.c
rtmpcrypt.h
rtmpdh.c
rtmpdh.h
rtmpdigest.c
rtmphttp.c
rtmppkt.c
rtmppkt.h
rtmpproto.c
rtp.c
rtp.h
rtpdec_ac3.c
rtpdec_amr.c
rtpdec_asf.c
rtpdec_dv.c
rtpdec_formats.h
rtpdec_g726.c
rtpdec_h261.c
rtpdec_h263_rfc2190.c
rtpdec_h263.c
rtpdec_h264.c
rtpdec_hevc.c
rtpdec_ilbc.c
rtpdec_jpeg.c
rtpdec_latm.c
rtpdec_mpa_robust.c
rtpdec_mpeg4.c
rtpdec_mpeg12.c
rtpdec_mpegts.c
rtpdec_qcelp.c
rtpdec_qdm2.c
rtpdec_qt.c
rtpdec_rfc4175.c
rtpdec_svq3.c
rtpdec_vc2hq.c
rtpdec_vp8.c
rtpdec_vp9.c
rtpdec_xiph.c
rtpdec.c
rtpdec.h
rtpenc_aac.c
rtpenc_amr.c
rtpenc_chain.c
rtpenc_chain.h
rtpenc_h261.c
rtpenc_h263_rfc2190.c
rtpenc_h263.c
rtpenc_h264_hevc.c
rtpenc_jpeg.c
rtpenc_latm.c
rtpenc_mpegts.c
rtpenc_mpv.c
rtpenc_vc2hq.c
rtpenc_vp8.c
rtpenc_vp9.c
rtpenc_xiph.c
rtpenc.c
rtpenc.h
rtpproto.c
rtpproto.h
rtsp.c libavformat/rtsp: return error if rtsp_hd_out is null instead of crash 2019-12-02 16:41:32 -08:00
rtsp.h Merge commit '1e56173515826aa4d680d3b216d80a3879ed1c68' 2019-05-02 13:02:58 -03:00
rtspcodes.h
rtspdec.c
rtspenc.c
s337m.c
samidec.c
sapdec.c
sapenc.c
sauce.c
sauce.h
sbcdec.c avformat/rawdec: Make the raw packet size configurable 2019-07-17 23:18:50 +02:00
sbgdec.c avformat/sbgdec: Fixes integer overflow in str_to_time() with hours 2019-06-14 21:36:39 +02:00
sccdec.c avformat/sccdec: display last caption even when there is no empty last line 2019-06-27 20:20:16 +02:00
sccenc.c
sctp.c
sdp.c
sdr2.c
sdsdec.c
sdxdec.c
segafilm.c
segafilmenc.c
segment.c avformat/segment: fix muxing tmcd tracks in MOV 2019-06-20 18:03:30 +05:30
serdec.c
shortendec.c avformat/rawdec: Make the raw packet size configurable 2019-07-17 23:18:50 +02:00
sierravmd.c
siff.c
smacker.c
smjpeg.c
smjpeg.h
smjpegdec.c
smjpegenc.c
smoothstreamingenc.c
smush.c
sol.c
sox.h
soxdec.c
soxenc.c
spdif.c
spdif.h
spdifdec.c
spdifenc.c
srtdec.c
srtenc.c
srtp.c
srtp.h
srtpproto.c
stldec.c
subfile.c libavformat/subfile: Improve AVSEEK_SIZE/SEEK_END seeking 2019-07-01 12:12:04 +02:00
subtitles.c avformat/subtitles: ignore extra '\r' at line endings 2019-04-27 12:49:56 +02:00
subtitles.h avformat/subtitles: ignore extra '\r' at line endings 2019-04-27 12:49:56 +02:00
subviewer1dec.c
subviewerdec.c
supdec.c
supenc.c
svag.c
swf.c
swf.h
swfdec.c
swfenc.c
takdec.c avformat/rawdec: Make the raw packet size configurable 2019-07-17 23:18:50 +02:00
tcp.c
tedcaptionsdec.c
tee_common.c
tee_common.h
tee.c
teeproto.c
thp.c
tiertexseq.c avformat/tiertexseq: Cleanup on error 2019-06-21 18:28:00 +02:00
tls_gnutls.c lavf/tls_gnutls: retry gnutls_handshake on non fatal errors 2019-06-14 21:19:41 +03:00
tls_libtls.c
tls_mbedtls.c
tls_openssl.c
tls_schannel.c
tls_securetransport.c
tls.c
tls.h
tmv.c
tta.c
ttaenc.c
tty.c
txd.c
ty.c
udp.c
uncodedframecrcenc.c
unix.c
url.c
url.h
urldecode.c
urldecode.h
utils.c avformat/utils: Check rfps_duration_sum for overflow 2019-07-19 21:42:38 +02:00
v210.c
vag.c
vapoursynth.c
vc1dec.c lavf/vc1dec: Reduce probe score for streams with invalid frames. 2019-04-19 14:06:29 +02:00
vc1test.c
vc1testenc.c
version.h Bump minor versions to separate 4.2 from master 2019-07-21 18:36:18 +02:00
vividas.c avformat/vividas: check for tiny blocks using alignment 2019-09-06 23:00:46 +02:00
vivo.c
voc_packet.c
voc.c
voc.h
vocdec.c
vocenc.c
vorbiscomment.c
vorbiscomment.h
vpcc.c
vpcc.h
vpk.c avformat/vpk: Check offset for validity 2019-06-14 21:36:39 +02:00
vplayerdec.c
vqf.c avformat/vqf: Check header_size 2019-06-29 19:22:19 +02:00
w64.c
w64.h
wavdec.c lafv/wavdec: Fail bext parsing on incomplete reads 2019-08-04 21:16:28 +02:00
wavenc.c
wc3movie.c
webm_chunk.c lavf/webm_chunk: Correct duration if start time > 0 2019-07-12 14:59:58 +02:00
webmdashenc.c
webpenc.c
webvttdec.c lavf/webvtt: fix ffmpeg -h demuxer=webvtt can't dump options 2019-06-14 13:18:32 +08:00
webvttenc.c
westwood_aud.c
westwood_vqa.c
wsddec.c avformat/rawdec: Make the raw packet size configurable 2019-07-17 23:18:50 +02:00
wtv_common.c
wtv.h
wtvdec.c avformat/wtvdec: Avoid (32bit signed) sectors 2019-06-14 21:36:39 +02:00
wtvenc.c
wv.c
wv.h
wvdec.c
wvedec.c
wvenc.c
xa.c
xmv.c avformat/xmv: Make bitrate 64bit 2019-07-14 22:17:43 +02:00
xvag.c
xwma.c
yop.c
yuv4mpeg.h
yuv4mpegdec.c
yuv4mpegenc.c