[vlc-commits] contrib: ass: Add patch to fix crash on macOS
Marvin Scholz
git at videolan.org
Wed Dec 4 11:32:59 CET 2019
vlc/vlc-3.0 | branch: master | Marvin Scholz <epirat07 at gmail.com> | 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 <epirat07 at gmail.com>
> 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
More information about the vlc-commits
mailing list