vlc/vlc-3.0 | branch: master | Marvin Scholz <[email protected]> | Thu Nov 7 00:06:39 2019 +0100| [03fb0731aae18258ba8965998fb3ec605318d25c] | committer: Marvin Scholz
contrib: ass: Add patch to fix crash on macOS Fixes a segfault in libass get_font_file function due to insufficient checks of return values. (cherry picked from commit 5259efcd4ac0111e393ca947fae0313af39d3b6b) Signed-off-by: Marvin Scholz <[email protected]> > http://git.videolan.org/gitweb.cgi/vlc/vlc-3.0.git/?a=commit;h=03fb0731aae18258ba8965998fb3ec605318d25c --- contrib/src/ass/coretext-errorhandling.patch | 27 +++++++++++++++++++++++++++ contrib/src/ass/rules.mak | 1 + 2 files changed, 28 insertions(+) diff --git a/contrib/src/ass/coretext-errorhandling.patch b/contrib/src/ass/coretext-errorhandling.patch new file mode 100644 index 0000000000..29401e48dc --- /dev/null +++ b/contrib/src/ass/coretext-errorhandling.patch @@ -0,0 +1,27 @@ +diff --git a/libass/ass_coretext.c b/libass/ass_coretext.c +index 59a8a2d..7371f7c 100644 +--- a/libass/ass_coretext.c ++++ b/libass/ass_coretext.c +@@ -96,7 +96,13 @@ static bool check_glyph(void *priv, uint32_t code) + static char *get_font_file(CTFontDescriptorRef fontd) + { + CFURLRef url = CTFontDescriptorCopyAttribute(fontd, kCTFontURLAttribute); ++ if (!url) ++ return NULL; + CFStringRef path = CFURLCopyFileSystemPath(url, kCFURLPOSIXPathStyle); ++ if (!path) { ++ SAFE_CFRelease(url); ++ return NULL; ++ } + char *buffer = cfstr2buf(path); + SAFE_CFRelease(path); + SAFE_CFRelease(url); +@@ -133,7 +139,7 @@ static void process_descriptors(ASS_Library *lib, ASS_FontProvider *provider, + int index = -1; + + char *path = get_font_file(fontd); +- if (strcmp("", path) == 0) { ++ if (!path || strcmp("", path) == 0) { + // skip the font if the URL field in the font descriptor is empty + free(path); + continue; diff --git a/contrib/src/ass/rules.mak b/contrib/src/ass/rules.mak index e5b0a31aeb..b4a2564af7 100644 --- a/contrib/src/ass/rules.mak +++ b/contrib/src/ass/rules.mak @@ -42,6 +42,7 @@ $(TARBALLS)/libass-$(ASS_VERSION).tar.gz: libass: libass-$(ASS_VERSION).tar.gz .sum-ass $(UNPACK) $(APPLY) $(SRC)/ass/ass-macosx.patch + $(APPLY) $(SRC)/ass/coretext-errorhandling.patch ifdef HAVE_WIN32 $(APPLY) $(SRC)/ass/use-topendir.patch ifdef HAVE_WINSTORE _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
