[FFmpeg-devel] [PATCH 4/6] lavf/tls_apple: link to SecIdentityCreate weakly

Rodger Combs rodger.combs at gmail.com
Tue Jun 11 17:16:21 EEST 2019


This is a private API, so it might go away in a future macOS version.
Linking to it weakly means that if it does, we won't crash during symbol lookup.
---
 libavformat/tls_apple.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/libavformat/tls_apple.c b/libavformat/tls_apple.c
index 37d63f3b27..23042eb8ee 100644
--- a/libavformat/tls_apple.c
+++ b/libavformat/tls_apple.c
@@ -38,7 +38,7 @@
 #include <CoreFoundation/CoreFoundation.h>
 
 // We use a private API call here; it's good enough for WebKit.
-SecIdentityRef SecIdentityCreate(CFAllocatorRef allocator, SecCertificateRef certificate, SecKeyRef privateKey);
+SecIdentityRef __attribute__((weak)) SecIdentityCreate(CFAllocatorRef allocator, SecCertificateRef certificate, SecKeyRef privateKey);
 #define ioErr -36
 
 typedef struct TLSContext {
@@ -165,6 +165,11 @@ static int load_identity(URLContext *h, SecIdentityRef *identity, CFArrayRef *ce
     if ((ret = import_pem(h, c->tls_shared.key_file, &keyArray)) < 0)
         goto end;
 
+    if (!SecIdentityCreate) {
+        ret = AVERROR_PATCHWELCOME;
+        goto end;
+    }
+
     if (CFGetTypeID(CFArrayGetValueAtIndex(*certArray, 0)) != SecCertificateGetTypeID() ||
         CFGetTypeID(CFArrayGetValueAtIndex(keyArray, 0)) != SecKeyGetTypeID()) {
         ret = AVERROR_INVALIDDATA;
-- 
2.21.0



More information about the ffmpeg-devel mailing list