From 2798a19f80918fff6ddfd1a39030d6fa7b178106 Mon Sep 17 00:00:00 2001 From: joaocolaco Date: Wed, 26 Apr 2017 12:31:32 +0100 Subject: [PATCH 1/4] Fix for DeviceGUIDRetriever.guid() crash in macos The DeviceGUIDRetriever.guid() will crash in macos because IORegistryEntryCreateCFProperty will return an Unmanaged CFTypeRef that should converted to managed type with takeRetainedValue() --- TPInAppReceipt/Source/DeviceGUIDRetriever.swift | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/TPInAppReceipt/Source/DeviceGUIDRetriever.swift b/TPInAppReceipt/Source/DeviceGUIDRetriever.swift index b96bdf4..198e314 100644 --- a/TPInAppReceipt/Source/DeviceGUIDRetriever.swift +++ b/TPInAppReceipt/Source/DeviceGUIDRetriever.swift @@ -42,8 +42,8 @@ class DeviceGUIDRetriever assertionFailure("Failed to retrieve guid") } - // Iterate over the result - var guidCFData: CFData! + // Iterate over the result + var guidCFData: Data? var service = IOIteratorNext(iterator) var parentService = io_object_t() @@ -56,18 +56,20 @@ class DeviceGUIDRetriever kernResult = IORegistryEntryGetParentEntry(service, kIOServicePlane, &parentService); if (kernResult == KERN_SUCCESS) { - guidCFData = IORegistryEntryCreateCFProperty(parentService, "IOMACAddress" as CFString, nil, 0) as! CFData? + if let retrievedGuidCFData = IORegistryEntryCreateCFProperty(parentService, "IOMACAddress" as CFString, nil, 0).takeRetainedValue() as? Data { + guidCFData = retrievedGuidCFData + } IOObjectRelease(parentService) } IOObjectRelease(service) - if let _ = guidCFData - { + if guidCFData != nil { break } } - return guidCFData as Data + return guidCFData ?? Data() + #endif } } From f5dd0a2e8466664eff611328b1e7aa9a830a0d35 Mon Sep 17 00:00:00 2001 From: Pavel Tikhonenko Date: Wed, 26 Apr 2017 13:16:03 -0700 Subject: [PATCH 2/4] Minor code enhancements --- .../Source/DeviceGUIDRetriever.swift | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/TPInAppReceipt/Source/DeviceGUIDRetriever.swift b/TPInAppReceipt/Source/DeviceGUIDRetriever.swift index 198e314..73aa26f 100644 --- a/TPInAppReceipt/Source/DeviceGUIDRetriever.swift +++ b/TPInAppReceipt/Source/DeviceGUIDRetriever.swift @@ -43,7 +43,7 @@ class DeviceGUIDRetriever } // Iterate over the result - var guidCFData: Data? + var guidData: Data! var service = IOIteratorNext(iterator) var parentService = io_object_t() @@ -51,24 +51,32 @@ class DeviceGUIDRetriever { IOObjectRelease(iterator) } + while(service != 0) { - kernResult = IORegistryEntryGetParentEntry(service, kIOServicePlane, &parentService); + kernResult = IORegistryEntryGetParentEntry(service, kIOServicePlane, &parentService) + if (kernResult == KERN_SUCCESS) { - if let retrievedGuidCFData = IORegistryEntryCreateCFProperty(parentService, "IOMACAddress" as CFString, nil, 0).takeRetainedValue() as? Data { - guidCFData = retrievedGuidCFData - } + guidData = IORegistryEntryCreateCFProperty(parentService, "IOMACAddress" as CFString, nil, 0).takeRetainedValue() as! Data + IOObjectRelease(parentService) } IOObjectRelease(service) - if guidCFData != nil { + if guidData != nil { break + }else{ + service = IOIteratorNext(iterator) } } - return guidCFData ?? Data() + if guidData == nil + { + assertionFailure("Failed to retrieve guid") + } + + return guidData #endif } From 4f551faaadf2d1bb59c2dfd067daedd05b79fc10 Mon Sep 17 00:00:00 2001 From: Pavel Tikhonenko Date: Wed, 26 Apr 2017 13:17:30 -0700 Subject: [PATCH 3/4] Bump up pod version --- TPInAppReceipt.podspec | 2 +- TPInAppReceipt/Info.plist | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/TPInAppReceipt.podspec b/TPInAppReceipt.podspec index 674e49d..d436dc3 100644 --- a/TPInAppReceipt.podspec +++ b/TPInAppReceipt.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "TPInAppReceipt" -s.version = "1.1.3" +s.version = "1.1.4" s.summary = "Validates and parses Apple Store Receipt." s.description = "This helper validates and parses the payload and the PKCS7 container itself. Pure swift, openssl+bitcode" diff --git a/TPInAppReceipt/Info.plist b/TPInAppReceipt/Info.plist index fbe1e6b..76bf6f7 100644 --- a/TPInAppReceipt/Info.plist +++ b/TPInAppReceipt/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.0 + 1.1.4 CFBundleVersion $(CURRENT_PROJECT_VERSION) NSPrincipalClass From 6004ad27bf3ad829887c00be8d1442f622be8d8a Mon Sep 17 00:00:00 2001 From: Pavel Tikhonenko Date: Wed, 26 Apr 2017 13:23:33 -0700 Subject: [PATCH 4/4] Update git ignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 7d6aff2..2db0cc6 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ ## Build generated build/ DerivedData/ +Packages/ ## Various settings *.pbxuser