From 517957eb70b757bdc4a51e62feac29095cd667e5 Mon Sep 17 00:00:00 2001 From: Marvin Scholz Date: Wed, 6 Nov 2019 23:44:16 +0100 Subject: coretext: fix error handling in get_font_file Fixes a crash in case a font does not has kCTFontURLAttribute, which is the case for example on macOS 10.15.1 for the ".AppleSymbolsFB" font. Fix #358 --- libass/ass_coretext.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'libass') 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; -- cgit v1.2.3