aboutsummaryrefslogtreecommitdiffstats
path: root/tests/api
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-10-17 03:35:08 +0200
committerAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-10-19 21:37:42 +0200
commit9a731e9fec53f121e0fd5981f22c9c5093db0793 (patch)
tree355dd4f84f3305fc27043ee037f4d89e66e6d808 /tests/api
parent0dd7b8232d38317abc195edc48434ac1fd3e80fd (diff)
downloadffmpeg-9a731e9fec53f121e0fd5981f22c9c5093db0793.tar.gz
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>
Diffstat (limited to 'tests/api')
0 files changed, 0 insertions, 0 deletions