From 98d01f7775b2f940a19a943dbcba31e8a885287f Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sat, 9 Jun 2018 20:04:40 -0700 Subject: [PATCH] Ensure the C strings stay valid until connection-time. Fixes #228 --- Limelight/Stream/Connection.m | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/Limelight/Stream/Connection.m b/Limelight/Stream/Connection.m index 8bcd89a..3d0d148 100644 --- a/Limelight/Stream/Connection.m +++ b/Limelight/Stream/Connection.m @@ -21,6 +21,9 @@ CONNECTION_LISTENER_CALLBACKS _clCallbacks; DECODER_RENDERER_CALLBACKS _drCallbacks; AUDIO_RENDERER_CALLBACKS _arCallbacks; + char _hostString[256]; + char _appVersionString[32]; + char _gfeVersionString[32]; } static NSLock* initLock; @@ -267,12 +270,24 @@ void ClLogMessage(const char* format, ...) if (initLock == nil) { initLock = [[NSLock alloc] init]; } + + strncpy(_hostString, + [config.host cStringUsingEncoding:NSUTF8StringEncoding], + sizeof(_hostString)); + strncpy(_appVersionString, + [config.appVersion cStringUsingEncoding:NSUTF8StringEncoding], + sizeof(_appVersionString)); + if (config.gfeVersion != nil) { + strncpy(_gfeVersionString, + [config.gfeVersion cStringUsingEncoding:NSUTF8StringEncoding], + sizeof(_gfeVersionString)); + } LiInitializeServerInformation(&_serverInfo); - _serverInfo.address = [config.host cStringUsingEncoding:NSUTF8StringEncoding]; - _serverInfo.serverInfoAppVersion = [config.appVersion cStringUsingEncoding:NSUTF8StringEncoding]; + _serverInfo.address = _hostString; + _serverInfo.serverInfoAppVersion = _appVersionString; if (config.gfeVersion != nil) { - _serverInfo.serverInfoGfeVersion = [config.gfeVersion cStringUsingEncoding:NSUTF8StringEncoding]; + _serverInfo.serverInfoGfeVersion = _gfeVersionString; } renderer = myRenderer;