1
0
mirror of https://github.com/mpv-player/mpv synced 2025-03-30 23:38:10 +00:00
mpv/player
Avi Halachmi (:avih) 5ed0338eea js: fix tiny leaks if js_try throws(!)
As it turns out, js_try can throw if it runs out of try-stack
(without/before entering either the try part or the catch part).

If it happens, then C code which does allocation -> try will leak.

In mpv there were two places which do alloc and then try, one of
them as part of the autofree system. On both cases the leak is the
smallest possible (zero allocation) - talloc_new(NULL);

It's very unlikely to trigger - an autofree mpv API should be called
when the try-stack is exactly full, and our next try will throw
(and guaranteed to get caught at an outer level, but with a leak).

Fix that by doing the allocation inside the try block, so that if
try throws before it's entered then nothing got allocated/leaked.

Mujs internal code also has/had similar leaks, which are getting
fixed around this time (July 2021, post mujs 1.1.3).

[1] exhaust the try-stack or call-stack, whichever comes first:
      function kaboom() { try { kaboom() } catch(e) {} }
2021-07-23 17:50:24 +03:00
..
javascript js: key bindings: ensure priorities for same-key bindings 2021-07-21 17:29:11 +03:00
lua stats.lua: remove script-opts for the main keys (i/I) 2021-07-21 13:55:58 +03:00
audio.c audio: check ao driver init failure to avoid use after free 2021-07-13 15:16:59 +00:00
client.c client API: inactivate the opengl_cb API 2020-09-03 14:52:11 +02:00
client.h scripting: remove race condition when toggling internal scripts 2020-03-26 23:59:44 +01:00
command.c command: adds support for secondary subs to sub-seek and sub-step 2021-07-12 21:07:37 +00:00
command.h command: add internal INPUT_PROCESSED event 2020-11-16 20:29:58 +02:00
configfiles.c options: add watch-later-options 2021-07-21 13:19:28 +00:00
core.h options: add watch-later-options 2021-07-21 13:19:28 +00:00
external_files.c player: change cover-art-auto behavior 2021-06-23 16:23:50 +00:00
external_files.h player: add automatic loading of external cover art files 2020-09-28 00:12:52 +02:00
javascript.c js: fix tiny leaks if js_try throws(!) 2021-07-23 17:50:24 +03:00
loadfile.c recorder: add support for attachments (fonts) 2021-07-08 12:44:06 +03:00
lua.c scripting (lua/js): utils.getpid: make wrapper of pid property 2021-05-01 16:07:05 +03:00
main.c options: add watch-later-options 2021-07-21 13:19:28 +00:00
misc.c audio: refactor how data is passed to AO 2020-08-29 13:12:32 +02:00
osd.c player: add --term-title option 2020-05-25 20:39:37 +02:00
playloop.c player: fix missed pause state update during reset in some cases 2021-07-18 12:22:55 +02:00
screenshot.c screenshot: add --screenshot-sw option 2020-10-05 00:16:46 +02:00
screenshot.h player: make screenshot each-frame mode more accurate 2020-02-07 13:32:21 +01:00
scripting.c player/scripting: fix use-after-free when loading script folders 2021-04-08 23:47:35 +03:00
sub.c sub: fix subs/lyrics on music files with sub-past-video-end=no 2021-06-27 21:02:39 -04:00
video.c player: let frontend decide whether to use cover-art mode 2020-09-28 00:04:21 +02:00