From 8a1dd15144a4dddbd5a4f7c242843c6c0a368423 Mon Sep 17 00:00:00 2001 From: Paul Beusterien Date: Fri, 6 Sep 2019 11:10:39 -0700 Subject: [PATCH 1/4] Fix SIGSEGV in callback after block is nil'd (#3786) --- Firebase/Storage/CHANGELOG.md | 3 +++ Firebase/Storage/FIRStorageUploadTask.m | 7 +++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Firebase/Storage/CHANGELOG.md b/Firebase/Storage/CHANGELOG.md index cf7086c99a3..0e84fc5edd1 100644 --- a/Firebase/Storage/CHANGELOG.md +++ b/Firebase/Storage/CHANGELOG.md @@ -1,3 +1,6 @@ +# 3.4.1 +- [fixed] Fix crash in FIRStorageUploadTask (#3750). + # 3.4.0 - [fixed] Ensure that users don't accidently invoke `Storage()` instead of `Storage.storage()`. If your code calls the constructor of Storage directly, we will throw an assertion failure, diff --git a/Firebase/Storage/FIRStorageUploadTask.m b/Firebase/Storage/FIRStorageUploadTask.m index 69b837c21aa..0dfdffb8a17 100644 --- a/Firebase/Storage/FIRStorageUploadTask.m +++ b/Firebase/Storage/FIRStorageUploadTask.m @@ -141,8 +141,6 @@ - (void)enqueue { // Process fetches strongSelf.state = FIRStorageTaskStateRunning; -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Warc-retain-cycles" strongSelf->_fetcherCompletion = ^(NSData *_Nullable data, NSError *_Nullable error) { // Fire last progress updates [self fireHandlersForStatus:FIRStorageTaskStatusProgress snapshot:self.snapshot]; @@ -172,11 +170,12 @@ - (void)enqueue { [self finishTaskWithStatus:FIRStorageTaskStatusSuccess snapshot:self.snapshot]; }; -#pragma clang diagnostic pop [strongSelf->_uploadFetcher beginFetchWithCompletionHandler:^(NSData *_Nullable data, NSError *_Nullable error) { - weakSelf.fetcherCompletion(data, error); + if (weakSelf.fetcherCompletion != nil) { + weakSelf.fetcherCompletion(data, error); + } }]; }]; } From 31d6a12d2be0340e448aed6cbcb27134f067d3ab Mon Sep 17 00:00:00 2001 From: Paul Beusterien Date: Mon, 9 Sep 2019 10:09:13 -0700 Subject: [PATCH 2/4] Remove UIWebViewDelegate references (#3799) --- Firebase/DynamicLinks/CHANGELOG.md | 3 +++ Firebase/DynamicLinks/FIRDLJavaScriptExecutor.m | 10 +--------- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/Firebase/DynamicLinks/CHANGELOG.md b/Firebase/DynamicLinks/CHANGELOG.md index 0ab18aa1ab5..b337f9e81f8 100644 --- a/Firebase/DynamicLinks/CHANGELOG.md +++ b/Firebase/DynamicLinks/CHANGELOG.md @@ -1,3 +1,6 @@ +# v4.0.5 +- [fixed] Removed references to UIWebViewDelegate to comply with App Store Submission warning. (#3722) + # v4.0.4 - [fixed] Removed references to UIWebView to comply with App Store Submission warning. (#3722) diff --git a/Firebase/DynamicLinks/FIRDLJavaScriptExecutor.m b/Firebase/DynamicLinks/FIRDLJavaScriptExecutor.m index 8908f911899..4cf934144ed 100644 --- a/Firebase/DynamicLinks/FIRDLJavaScriptExecutor.m +++ b/Firebase/DynamicLinks/FIRDLJavaScriptExecutor.m @@ -18,14 +18,6 @@ #import "DynamicLinks/FIRDLJavaScriptExecutor.h" -// define below needed because nullability of UIWebViewDelegate method param was changed between -// iOS SDK versions -#if (defined(__IPHONE_10_0) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0)) -#define FIRDL_NULLABLE_IOS9_NONNULLABLE_IOS10 nonnull -#else -#define FIRDL_NULLABLE_IOS9_NONNULLABLE_IOS10 nullable -#endif - NS_ASSUME_NONNULL_BEGIN static NSString *const kJSMethodName = @"generateFingerprint"; @@ -50,7 +42,7 @@ return methodString; } -@interface FIRDLJavaScriptExecutor () +@interface FIRDLJavaScriptExecutor () @end @implementation FIRDLJavaScriptExecutor { From a4decd0df3aeab12cf81fdee4c6a4a8f40c629cd Mon Sep 17 00:00:00 2001 From: Paul Beusterien Date: Mon, 9 Sep 2019 10:25:50 -0700 Subject: [PATCH 3/4] Fix header issues exposed by :generate_multiple_pod_projects (#3803) --- .../Tests/FIRInstanceIDCheckinServiceTest.m | 2 +- .../Tests/FIRInstanceIDCheckinStoreTest.m | 2 +- .../InstanceID/Tests/FIRInstanceIDStoreTest.m | 2 +- .../Tests/FIRInstanceIDTokenOperationsTest.m | 2 +- Firebase/InstanceID/CHANGELOG.md | 3 +++ .../FIRInstanceIDCheckinPreferences+Internal.h | 2 +- .../FIRInstanceIDCheckinPreferences_Private.h | 2 +- .../InstanceID/FIRInstanceIDCheckinService.h | 15 +-------------- .../InstanceID/Private/FIRInstanceID+Private.h | 17 +++++++++++++++-- 9 files changed, 25 insertions(+), 22 deletions(-) diff --git a/Example/InstanceID/Tests/FIRInstanceIDCheckinServiceTest.m b/Example/InstanceID/Tests/FIRInstanceIDCheckinServiceTest.m index e38c1593e87..519cedd7e2f 100644 --- a/Example/InstanceID/Tests/FIRInstanceIDCheckinServiceTest.m +++ b/Example/InstanceID/Tests/FIRInstanceIDCheckinServiceTest.m @@ -16,12 +16,12 @@ #import +#import #import #import "Firebase/InstanceID/FIRInstanceIDCheckinPreferences+Internal.h" #import "Firebase/InstanceID/FIRInstanceIDCheckinService.h" #import "Firebase/InstanceID/FIRInstanceIDUtilities.h" #import "Firebase/InstanceID/NSError+FIRInstanceID.h" -#import "Firebase/InstanceID/Private/FIRInstanceIDCheckinPreferences.h" static NSString *const kDeviceAuthId = @"1234"; static NSString *const kSecretToken = @"567890"; diff --git a/Example/InstanceID/Tests/FIRInstanceIDCheckinStoreTest.m b/Example/InstanceID/Tests/FIRInstanceIDCheckinStoreTest.m index ef95fb3b9cb..4502b275990 100644 --- a/Example/InstanceID/Tests/FIRInstanceIDCheckinStoreTest.m +++ b/Example/InstanceID/Tests/FIRInstanceIDCheckinStoreTest.m @@ -18,6 +18,7 @@ #import +#import #import "FIRInstanceIDFakeKeychain.h" #import "Firebase/InstanceID/FIRInstanceIDAuthKeyChain.h" #import "Firebase/InstanceID/FIRInstanceIDBackupExcludedPlist.h" @@ -27,7 +28,6 @@ #import "Firebase/InstanceID/FIRInstanceIDStore.h" #import "Firebase/InstanceID/FIRInstanceIDUtilities.h" #import "Firebase/InstanceID/FIRInstanceIDVersionUtilities.h" -#import "Firebase/InstanceID/Private/FIRInstanceIDCheckinPreferences.h" static const NSTimeInterval kExpectationTimeout = 12; diff --git a/Example/InstanceID/Tests/FIRInstanceIDStoreTest.m b/Example/InstanceID/Tests/FIRInstanceIDStoreTest.m index 9355673dbdb..fc3b5da167a 100644 --- a/Example/InstanceID/Tests/FIRInstanceIDStoreTest.m +++ b/Example/InstanceID/Tests/FIRInstanceIDStoreTest.m @@ -16,6 +16,7 @@ #import +#import #import #import "FIRInstanceIDFakeKeychain.h" #import "Firebase/InstanceID/FIRInstanceIDBackupExcludedPlist.h" @@ -26,7 +27,6 @@ #import "Firebase/InstanceID/FIRInstanceIDTokenInfo.h" #import "Firebase/InstanceID/FIRInstanceIDTokenStore.h" #import "Firebase/InstanceID/FIRInstanceIDUtilities.h" -#import "Firebase/InstanceID/Private/FIRInstanceIDCheckinPreferences.h" static NSString *const kSubDirectoryName = @"FirebaseInstanceIDStoreTest"; diff --git a/Example/InstanceID/Tests/FIRInstanceIDTokenOperationsTest.m b/Example/InstanceID/Tests/FIRInstanceIDTokenOperationsTest.m index dd7cfd7cb99..05d8d21cbe6 100644 --- a/Example/InstanceID/Tests/FIRInstanceIDTokenOperationsTest.m +++ b/Example/InstanceID/Tests/FIRInstanceIDTokenOperationsTest.m @@ -16,6 +16,7 @@ #import +#import #import #import "Firebase/InstanceID/FIRInstanceIDAuthService.h" #import "Firebase/InstanceID/FIRInstanceIDCheckinPreferences+Internal.h" @@ -30,7 +31,6 @@ #import "Firebase/InstanceID/FIRInstanceIDTokenOperation+Private.h" #import "Firebase/InstanceID/FIRInstanceIDTokenOperation.h" #import "Firebase/InstanceID/NSError+FIRInstanceID.h" -#import "Firebase/InstanceID/Public/FIRInstanceID.h" #import diff --git a/Firebase/InstanceID/CHANGELOG.md b/Firebase/InstanceID/CHANGELOG.md index 960eb7df7b3..6034233c372 100644 --- a/Firebase/InstanceID/CHANGELOG.md +++ b/Firebase/InstanceID/CHANGELOG.md @@ -1,3 +1,6 @@ +# 2019-09 -- 4.2.5 +- [fixed] Fix private header imports (#3796). + # 2019-09 -- 4.2.4 - [changed] Moved two headers from internal to private for Remote Config open sourcing (#3621). diff --git a/Firebase/InstanceID/FIRInstanceIDCheckinPreferences+Internal.h b/Firebase/InstanceID/FIRInstanceIDCheckinPreferences+Internal.h index 8b109a5d362..d2f286d797a 100644 --- a/Firebase/InstanceID/FIRInstanceIDCheckinPreferences+Internal.h +++ b/Firebase/InstanceID/FIRInstanceIDCheckinPreferences+Internal.h @@ -14,7 +14,7 @@ * limitations under the License. */ -#import "Private/FIRInstanceIDCheckinPreferences.h" +#import @interface FIRInstanceIDCheckinPreferences (Internal) diff --git a/Firebase/InstanceID/FIRInstanceIDCheckinPreferences_Private.h b/Firebase/InstanceID/FIRInstanceIDCheckinPreferences_Private.h index 6e918bc79b2..9c5850ba4ad 100644 --- a/Firebase/InstanceID/FIRInstanceIDCheckinPreferences_Private.h +++ b/Firebase/InstanceID/FIRInstanceIDCheckinPreferences_Private.h @@ -14,7 +14,7 @@ * limitations under the License. */ -#import "Private/FIRInstanceIDCheckinPreferences.h" +#import /** Checkin refresh interval. **/ FOUNDATION_EXPORT const NSTimeInterval kFIRInstanceIDDefaultCheckinInterval; diff --git a/Firebase/InstanceID/FIRInstanceIDCheckinService.h b/Firebase/InstanceID/FIRInstanceIDCheckinService.h index cc97e4700a3..e14b51cb5dd 100644 --- a/Firebase/InstanceID/FIRInstanceIDCheckinService.h +++ b/Firebase/InstanceID/FIRInstanceIDCheckinService.h @@ -16,6 +16,7 @@ #import +#import #import "FIRInstanceIDUtilities.h" NS_ASSUME_NONNULL_BEGIN @@ -31,20 +32,6 @@ FOUNDATION_EXPORT NSString *const kFIRInstanceIDDeviceDataVersionKey; @class FIRInstanceIDCheckinPreferences; -/** - * @related FIRInstanceIDCheckinService - * - * The completion handler invoked once the fetch from Checkin server finishes. - * For successful fetches we returned checkin information by the checkin service - * and `nil` error, else we return the appropriate error object as reported by the - * Checkin Service. - * - * @param checkinPreferences The checkin preferences as fetched from the server. - * @param error The error object which fetching GServices data. - */ -typedef void (^FIRInstanceIDDeviceCheckinCompletion)( - FIRInstanceIDCheckinPreferences *_Nullable checkinPreferences, NSError *_Nullable error); - /** * Register the device with Checkin Service and get back the `authID`, `secret * token` etc. for the client. Checkin results are cached in the diff --git a/Firebase/InstanceID/Private/FIRInstanceID+Private.h b/Firebase/InstanceID/Private/FIRInstanceID+Private.h index d231f26ad81..31d41230530 100644 --- a/Firebase/InstanceID/Private/FIRInstanceID+Private.h +++ b/Firebase/InstanceID/Private/FIRInstanceID+Private.h @@ -14,9 +14,22 @@ * limitations under the License. */ -#import "FIRInstanceID.h" +#import +#import -#import "FIRInstanceIDCheckinService.h" +/** + * @related FIRInstanceIDCheckinService + * + * The completion handler invoked once the fetch from Checkin server finishes. + * For successful fetches we returned checkin information by the checkin service + * and `nil` error, else we return the appropriate error object as reported by the + * Checkin Service. + * + * @param checkinPreferences The checkin preferences as fetched from the server. + * @param error The error object which fetching GServices data. + */ +typedef void (^FIRInstanceIDDeviceCheckinCompletion)( + FIRInstanceIDCheckinPreferences *_Nullable checkinPreferences, NSError *_Nullable error); /** * Private API used by Firebase SDK teams by calling in reflection or internal teams. From 22be068049922bab7a458555e635731f9e3f4960 Mon Sep 17 00:00:00 2001 From: Paul Beusterien Date: Mon, 9 Sep 2019 10:40:05 -0700 Subject: [PATCH 4/4] cherry-picks and versions for 6.8.1 --- Example/Podfile | 2 +- FirebaseCore.podspec | 4 ++-- FirebaseDynamicLinks.podspec | 2 +- FirebaseInstanceID.podspec | 2 +- FirebaseStorage.podspec | 2 +- Firestore/Example/Podfile | 2 +- Releases/Manifests/6.8.1.json | 6 ++++++ SymbolCollisionTest/Podfile | 2 +- 8 files changed, 14 insertions(+), 8 deletions(-) create mode 100644 Releases/Manifests/6.8.1.json diff --git a/Example/Podfile b/Example/Podfile index 6626c5b9cac..842f2f450ac 100644 --- a/Example/Podfile +++ b/Example/Podfile @@ -21,7 +21,7 @@ target 'Core_Example_iOS' do # The next line is the forcing function for the Firebase pod. The Firebase # version's subspecs should depend on the component versions in the # corresponding podspec's in this repo. - pod 'Firebase/CoreOnly', '6.8.0' + pod 'Firebase/CoreOnly', '6.8.1' target 'Core_Tests_iOS' do inherit! :search_paths diff --git a/FirebaseCore.podspec b/FirebaseCore.podspec index 814582b2e6e..f48035eaaad 100644 --- a/FirebaseCore.podspec +++ b/FirebaseCore.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'FirebaseCore' - s.version = '6.2.2' + s.version = '6.2.3' s.summary = 'Firebase Core for iOS (plus community support for macOS and tvOS)' s.description = <<-DESC @@ -39,7 +39,7 @@ Firebase Core includes FIRApp and FIROptions which provide central configuration s.pod_target_xcconfig = { 'GCC_C_LANGUAGE_STANDARD' => 'c99', 'GCC_PREPROCESSOR_DEFINITIONS' => - 'FIRCore_VERSION=' + s.version.to_s + ' Firebase_VERSION=6.8.0', + 'FIRCore_VERSION=' + s.version.to_s + ' Firebase_VERSION=6.8.1', 'OTHER_CFLAGS' => '-fno-autolink' } s.test_spec 'unit' do |unit_tests| diff --git a/FirebaseDynamicLinks.podspec b/FirebaseDynamicLinks.podspec index d990bb53f01..9deb12818ee 100644 --- a/FirebaseDynamicLinks.podspec +++ b/FirebaseDynamicLinks.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'FirebaseDynamicLinks' - s.version = '4.0.4' + s.version = '4.0.5' s.summary = 'Firebase DynamicLinks for iOS' s.description = <<-DESC diff --git a/FirebaseInstanceID.podspec b/FirebaseInstanceID.podspec index 7bc6d727173..66ac732d274 100644 --- a/FirebaseInstanceID.podspec +++ b/FirebaseInstanceID.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'FirebaseInstanceID' - s.version = '4.2.4' + s.version = '4.2.5' s.summary = 'Firebase InstanceID for iOS' s.description = <<-DESC diff --git a/FirebaseStorage.podspec b/FirebaseStorage.podspec index 1b142963351..71c5c634cbd 100644 --- a/FirebaseStorage.podspec +++ b/FirebaseStorage.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'FirebaseStorage' - s.version = '3.4.0' + s.version = '3.4.1' s.summary = 'Firebase Storage for iOS (plus community support for macOS and tvOS)' s.description = <<-DESC diff --git a/Firestore/Example/Podfile b/Firestore/Example/Podfile index 5189ba7b5ab..93c96ccec33 100644 --- a/Firestore/Example/Podfile +++ b/Firestore/Example/Podfile @@ -96,7 +96,7 @@ target 'Firestore_Example_iOS' do # The next line is the forcing function for the Firebase pod. The Firebase # version's subspecs should depend on the component versions in their # corresponding podspecs. - pod 'Firebase/CoreOnly', '6.8.0' + pod 'Firebase/CoreOnly', '6.8.1' configure_local_pods() diff --git a/Releases/Manifests/6.8.1.json b/Releases/Manifests/6.8.1.json new file mode 100644 index 00000000000..26ba6c82c3b --- /dev/null +++ b/Releases/Manifests/6.8.1.json @@ -0,0 +1,6 @@ +{ + "FirebaseCore":"6.2.3", + "FirebaseDynamicLinks":"4.0.5", + "FirebaseInstanceID":"4.2.5", + "FirebaseStorage":"3.4.1" +} diff --git a/SymbolCollisionTest/Podfile b/SymbolCollisionTest/Podfile index b207838f750..18ec6fdb9b1 100644 --- a/SymbolCollisionTest/Podfile +++ b/SymbolCollisionTest/Podfile @@ -8,7 +8,7 @@ target 'SymbolCollisionTest' do # use_frameworks! # Firebase Pods - pod 'Firebase', '6.8.0' + pod 'Firebase', '6.8.1' pod 'FirebaseAnalytics' pod 'FirebaseAuth' pod 'FirebaseCore'