From 19e74a4b21765f0cb97923fbd12e27bbcda8d3e6 Mon Sep 17 00:00:00 2001 From: Paul Beusterien Date: Fri, 28 Nov 2025 11:09:03 -0800 Subject: [PATCH 1/6] Fix GDTCORDirectorySizeTracker crash --- CHANGELOG.md | 4 ++++ .../GDTCORLibrary/GDTCORDirectorySizeTracker.m | 2 +- .../Unit/GDTCORDirectorySizeTrackerTests.m | 18 ++++++++++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b25a4bc..5b99d1f8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +# v10.1.1 +- Fix `GDTCORDirectorySizeTracker` crash. + ([firebase-ios-sdk/#15414](https://github.com/firebase/firebase-ios-sdk/issues/15414)) + # v10.1.0 - Fix `[FBLPromise HTTPBody]` SwiftUI Previews crash when using binary distribution. ([firebase-ios-sdk/#13318](https://github.com/firebase/firebase-ios-sdk/issues/13318), diff --git a/GoogleDataTransport/GDTCORLibrary/GDTCORDirectorySizeTracker.m b/GoogleDataTransport/GDTCORLibrary/GDTCORDirectorySizeTracker.m index 0bc85150..85e51594 100644 --- a/GoogleDataTransport/GDTCORLibrary/GDTCORDirectorySizeTracker.m +++ b/GoogleDataTransport/GDTCORLibrary/GDTCORDirectorySizeTracker.m @@ -76,7 +76,7 @@ - (GDTCORStorageSizeBytes)calculateDirectoryContentSize { includingPropertiesForKeys:prefetchedProperties options:NSDirectoryEnumerationSkipsHiddenFiles errorHandler:^BOOL(NSURL *_Nonnull url, NSError *_Nonnull error) { - return YES; + return NO; }]; for (NSURL *fileURL in enumerator) { diff --git a/GoogleDataTransport/GDTCORTests/Unit/GDTCORDirectorySizeTrackerTests.m b/GoogleDataTransport/GDTCORTests/Unit/GDTCORDirectorySizeTrackerTests.m index 901f8e3b..b1dc261d 100644 --- a/GoogleDataTransport/GDTCORTests/Unit/GDTCORDirectorySizeTrackerTests.m +++ b/GoogleDataTransport/GDTCORTests/Unit/GDTCORDirectorySizeTrackerTests.m @@ -32,4 +32,22 @@ - (void)testDirectoryContentSizeDoesNotCrashWhenDirectoryPathContainsWhitespaces XCTAssertNoThrow([tracker directoryContentSize]); } +- (void)testDirectoryContentSizeReturnsZeroWhenError { + // Given + NSString *dir = [NSTemporaryDirectory() stringByAppendingPathComponent:@"a"]; + [[NSFileManager defaultManager] createDirectoryAtPath:dir + withIntermediateDirectories:YES + attributes:nil + error:nil]; + GDTCORDirectorySizeTracker *sut = + [[GDTCORDirectorySizeTracker alloc] initWithDirectoryPath:dir]; + [[NSFileManager defaultManager] removeItemAtPath:dir error:nil]; + + // When + GDTCORStorageSizeBytes size = [sut directoryContentSize]; + + // Then + XCTAssertEqual(size, 0); +} + @end From 59c433bc5ff686b700bcf897e6358d64296d3183 Mon Sep 17 00:00:00 2001 From: Paul Beusterien Date: Fri, 28 Nov 2025 11:19:15 -0800 Subject: [PATCH 2/6] style --- .../GDTCORTests/Unit/GDTCORDirectorySizeTrackerTests.m | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/GoogleDataTransport/GDTCORTests/Unit/GDTCORDirectorySizeTrackerTests.m b/GoogleDataTransport/GDTCORTests/Unit/GDTCORDirectorySizeTrackerTests.m index b1dc261d..0cc0739c 100644 --- a/GoogleDataTransport/GDTCORTests/Unit/GDTCORDirectorySizeTrackerTests.m +++ b/GoogleDataTransport/GDTCORTests/Unit/GDTCORDirectorySizeTrackerTests.m @@ -39,8 +39,7 @@ - (void)testDirectoryContentSizeReturnsZeroWhenError { withIntermediateDirectories:YES attributes:nil error:nil]; - GDTCORDirectorySizeTracker *sut = - [[GDTCORDirectorySizeTracker alloc] initWithDirectoryPath:dir]; + GDTCORDirectorySizeTracker *sut = [[GDTCORDirectorySizeTracker alloc] initWithDirectoryPath:dir]; [[NSFileManager defaultManager] removeItemAtPath:dir error:nil]; // When From b9986af9b299f2e41c192d31038733497938b272 Mon Sep 17 00:00:00 2001 From: Paul Beusterien Date: Mon, 8 Dec 2025 16:00:37 -0800 Subject: [PATCH 3/6] Apply suggestions from code review Co-authored-by: Nick Cooke <36927374+ncooke3@users.noreply.github.com> --- CHANGELOG.md | 5 ++--- .../GDTCORLibrary/GDTCORDirectorySizeTracker.m | 5 ++++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5b99d1f8..0e29ff63 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,5 @@ -# v10.1.1 -- Fix `GDTCORDirectorySizeTracker` crash. - ([firebase-ios-sdk/#15414](https://github.com/firebase/firebase-ios-sdk/issues/15414)) +# Unreleased +- Log error when handling directory enumeration. # v10.1.0 - Fix `[FBLPromise HTTPBody]` SwiftUI Previews crash when using binary diff --git a/GoogleDataTransport/GDTCORLibrary/GDTCORDirectorySizeTracker.m b/GoogleDataTransport/GDTCORLibrary/GDTCORDirectorySizeTracker.m index 85e51594..f74c6884 100644 --- a/GoogleDataTransport/GDTCORLibrary/GDTCORDirectorySizeTracker.m +++ b/GoogleDataTransport/GDTCORLibrary/GDTCORDirectorySizeTracker.m @@ -76,7 +76,10 @@ - (GDTCORStorageSizeBytes)calculateDirectoryContentSize { includingPropertiesForKeys:prefetchedProperties options:NSDirectoryEnumerationSkipsHiddenFiles errorHandler:^BOOL(NSURL *_Nonnull url, NSError *_Nonnull error) { - return NO; + GDTCORLogWarning(GDTCORMCWFileReadError, + @"Error enumerating content size for URL %@: %@", url, + error); + return YES; }]; for (NSURL *fileURL in enumerator) { From 9562550e93e20eb0eb0b9109cedbedba4c4e44e8 Mon Sep 17 00:00:00 2001 From: Paul Beusterien Date: Mon, 8 Dec 2025 16:02:13 -0800 Subject: [PATCH 4/6] Update GoogleDataTransport/GDTCORTests/Unit/GDTCORDirectorySizeTrackerTests.m Co-authored-by: Nick Cooke <36927374+ncooke3@users.noreply.github.com> --- .../Unit/GDTCORDirectorySizeTrackerTests.m | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/GoogleDataTransport/GDTCORTests/Unit/GDTCORDirectorySizeTrackerTests.m b/GoogleDataTransport/GDTCORTests/Unit/GDTCORDirectorySizeTrackerTests.m index 0cc0739c..901f8e3b 100644 --- a/GoogleDataTransport/GDTCORTests/Unit/GDTCORDirectorySizeTrackerTests.m +++ b/GoogleDataTransport/GDTCORTests/Unit/GDTCORDirectorySizeTrackerTests.m @@ -32,21 +32,4 @@ - (void)testDirectoryContentSizeDoesNotCrashWhenDirectoryPathContainsWhitespaces XCTAssertNoThrow([tracker directoryContentSize]); } -- (void)testDirectoryContentSizeReturnsZeroWhenError { - // Given - NSString *dir = [NSTemporaryDirectory() stringByAppendingPathComponent:@"a"]; - [[NSFileManager defaultManager] createDirectoryAtPath:dir - withIntermediateDirectories:YES - attributes:nil - error:nil]; - GDTCORDirectorySizeTracker *sut = [[GDTCORDirectorySizeTracker alloc] initWithDirectoryPath:dir]; - [[NSFileManager defaultManager] removeItemAtPath:dir error:nil]; - - // When - GDTCORStorageSizeBytes size = [sut directoryContentSize]; - - // Then - XCTAssertEqual(size, 0); -} - @end From 9b0df2258df63722e7b8e360514d76b5806eabba Mon Sep 17 00:00:00 2001 From: Paul Beusterien Date: Mon, 8 Dec 2025 16:09:53 -0800 Subject: [PATCH 5/6] Add missing import --- GoogleDataTransport/GDTCORLibrary/GDTCORDirectorySizeTracker.m | 1 + 1 file changed, 1 insertion(+) diff --git a/GoogleDataTransport/GDTCORLibrary/GDTCORDirectorySizeTracker.m b/GoogleDataTransport/GDTCORLibrary/GDTCORDirectorySizeTracker.m index f74c6884..07dd958d 100644 --- a/GoogleDataTransport/GDTCORLibrary/GDTCORDirectorySizeTracker.m +++ b/GoogleDataTransport/GDTCORLibrary/GDTCORDirectorySizeTracker.m @@ -15,6 +15,7 @@ */ #import "GoogleDataTransport/GDTCORLibrary/Internal/GDTCORDirectorySizeTracker.h" +#import "GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport/GDTCORConsoleLogger.h" @interface GDTCORDirectorySizeTracker () From a2631f8428b478412875c12adebb0f5ae5c9a669 Mon Sep 17 00:00:00 2001 From: Paul Beusterien Date: Mon, 8 Dec 2025 16:12:05 -0800 Subject: [PATCH 6/6] Fix changelog merge mistake --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0e29ff63..5da55242 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,5 @@ # Unreleased +- Cancel upload operation when background task expires. - Log error when handling directory enumeration. # v10.1.0