No description
Find a file
Andreas Rheinhardt 915e68c051 avcodec/movtextenc: Fix memleak on (re)allocation error
Up until now, the mov_text encoder used the dynamic array API for its
list of style attributes; it used the (horrible) av_dynarray_add() which
works with an array of pointers; on error it frees its array but not
the buffers referenced by the pointers said array contains. It also
returns no error code, encouraging not to check for errors.

These properties imply that this function may only be used if the buffers
referenced by the list either need not be freed at all or if they are
freed by other means (i.e. if the list contains non-ownership pointers).

In this case, the style attributes are owned by the pointers of the
dynamic list. Ergo the old style attributes leak on a subsequent
reallocation failure. But given that the (re)allocation isn't checked
for success, the style attribute intended to be added to the list also
leaks because the only pointer to it gets overwritten in the belief that
it is now owned by the list.

This commit fixes this by switching to av_fast_realloc() and an array
containing the styles directly instead of pointers to individually
allocated style attributes. The current style attributes are now no longer
individually allocated, instead they are part of the context.

Furthermore, av_fast_realloc() allows to easily distinguish between
valid and allocated elements, thereby allowing to reuse the array
(which up until now has always been freed after processing an
AVSubtitleRect).

Reviewed-by: Philip Langdale <philipl@overt.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
(cherry picked from commit 9a731e9fec)
2021-02-27 07:20:58 +01:00
compat compat/cuda/ptx2c: remove shell loop; fix BSD sed compat 2020-06-01 22:10:41 -05:00
doc Update for 4.3.2 2021-02-02 14:55:32 +01:00
ffbuild common.mak: Also clean Windows debug files. 2020-03-21 18:46:00 +01:00
fftools fftools/ffmpeg: Fix leak of AVFilterInOut in case of error 2021-02-27 07:20:56 +01:00
libavcodec avcodec/movtextenc: Fix memleak on (re)allocation error 2021-02-27 07:20:58 +01:00
libavdevice Bump minor versions to separate 4.3 from master 2020-06-08 22:49:04 +02:00
libavfilter avfilter/vf_minterpolate: Fix left shift of negative value 2021-02-27 07:20:58 +01:00
libavformat avformat/movenc: Don't forget to free fragment buffers 2021-02-27 07:20:58 +01:00
libavresample avresample: remove deprecated attribute from the AVAudioResampleContext struct 2018-01-09 10:56:53 -03:00
libavutil libavutil/eval: Remove CONFIG_TRAPV special handling 2021-02-20 14:21:24 +01:00
libpostproc Bump minor versions to separate 4.3 from master 2020-06-08 22:49:04 +02:00
libswresample swresample/audioconvert: Fix left shift of negative value 2021-02-27 07:20:58 +01:00
libswscale swscale/x86/yuv2rgb: fix crashes when loading alpha from unaligned buffers 2020-11-02 00:51:05 +01:00
presets
tests lavf/url: fix relative url parsing when the query string or fragment has a colon 2020-10-28 21:41:21 +01:00
tools tools/target_dec_fuzzer: enable mjpeg for tiff or tdsc 2020-06-08 20:45:56 +02:00
.gitattributes fate: add SCC test 2017-01-27 17:06:42 +01:00
.gitignore tools/python: add script to convert TensorFlow model (.pb) to native model (.model) 2019-07-01 10:23:47 -03:00
.mailmap mailmap: fix 3-address entries 2020-03-31 04:14:14 -05:00
.travis.yml Merge commit '899ee03088' 2019-03-14 15:53:16 -03:00
Changelog Changelog: update 2021-02-20 14:22:23 +01:00
configure configure: update copyright year 2021-01-01 09:44:00 +05:30
CONTRIBUTING.md Add CONTRIBUTING.md 2016-09-18 10:02:13 +01:00
COPYING.GPLv2
COPYING.GPLv3
COPYING.LGPLv2.1
COPYING.LGPLv3
CREDITS
INSTALL.md INSTALL.md: Fix Markdown formatting 2019-01-31 10:29:16 -09:00
LICENSE.md avfilter/vf_geq: Relicense to LGPL 2019-12-28 11:20:48 +01:00
MAINTAINERS oggdec: remove the oggparsedaala subdemuxer 2020-05-23 19:07:20 +01:00
Makefile Makefile: Delete more created files when running "make distclean". 2020-03-11 11:43:01 +01:00
README.md Remove the ffserver program 2018-01-06 18:31:37 +00:00
RELEASE Update for 4.3.2 2021-02-02 14:55:32 +01:00
RELEASE_NOTES RELEASE_NOTES: Based on the version from 4.1 2020-06-14 22:02:34 +02:00

FFmpeg README

FFmpeg is a collection of libraries and tools to process multimedia content such as audio, video, subtitles and related metadata.

Libraries

  • libavcodec provides implementation of a wider range of codecs.
  • libavformat implements streaming protocols, container formats and basic I/O access.
  • libavutil includes hashers, decompressors and miscellaneous utility functions.
  • libavfilter provides a mean to alter decoded Audio and Video through chain of filters.
  • libavdevice provides an abstraction to access capture and playback devices.
  • libswresample implements audio mixing and resampling routines.
  • libswscale implements color conversion and scaling routines.

Tools

  • ffmpeg is a command line toolbox to manipulate, convert and stream multimedia content.
  • ffplay is a minimalistic multimedia player.
  • ffprobe is a simple analysis tool to inspect multimedia content.
  • Additional small tools such as aviocat, ismindex and qt-faststart.

Documentation

The offline documentation is available in the doc/ directory.

The online documentation is available in the main website and in the wiki.

Examples

Coding examples are available in the doc/examples directory.

License

FFmpeg codebase is mainly LGPL-licensed with optional components licensed under GPL. Please refer to the LICENSE file for detailed information.

Contributing

Patches should be submitted to the ffmpeg-devel mailing list using git format-patch or git send-email. Github pull requests should be avoided because they are not part of our review process and will be ignored.