From dd56499fe94aa261e0a4064dad436ad36a5b22b0 Mon Sep 17 00:00:00 2001 From: Tim Kosse Date: Tue, 12 Feb 2019 16:19:18 +0100 Subject: [PATCH] Fix crashes when pasting non-text data in wxOSX Check that conversions succeed before using their results to avoid crashing if the data on clipboard is in an unexpected format. Closes #18344. --- src/osx/carbon/dataobj.cpp | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/osx/carbon/dataobj.cpp b/src/osx/carbon/dataobj.cpp index 059d766350..cb1abf26de 100644 --- a/src/osx/carbon/dataobj.cpp +++ b/src/osx/carbon/dataobj.cpp @@ -469,14 +469,20 @@ bool wxDataObject::GetFromPasteboard( void * pb ) { // revert the translation and decomposition to arrive at a proper utf8 string again CFURLRef url = CFURLCreateWithBytes( kCFAllocatorDefault, CFDataGetBytePtr( flavorData ), flavorDataSize, kCFStringEncodingUTF8, NULL ); - CFStringRef cfString = CFURLCopyFileSystemPath( url, kCFURLPOSIXPathStyle ); - CFRelease( url ); - CFMutableStringRef cfMutableString = CFStringCreateMutableCopy(NULL, 0, cfString); - CFRelease( cfString ); - CFStringNormalize(cfMutableString,kCFStringNormalizationFormC); - wxString path = wxCFStringRef(cfMutableString).AsString(); - if (!path.empty()) - filenamesPassed += path + wxT("\n"); + if ( url ) + { + CFStringRef cfString = CFURLCopyFileSystemPath( url, kCFURLPOSIXPathStyle ); + CFRelease( url ); + if ( cfString ) + { + CFMutableStringRef cfMutableString = CFStringCreateMutableCopy(NULL, 0, cfString); + CFRelease( cfString ); + CFStringNormalize(cfMutableString,kCFStringNormalizationFormC); + wxString path = wxCFStringRef(cfMutableString).AsString(); + if (!path.empty()) + filenamesPassed += path + wxT("\n"); + } + } } else {