From f0be228e32026fb2ff38a4e2902b6ea949a6314f Mon Sep 17 00:00:00 2001 From: Jesus Rojas Date: Thu, 11 Sep 2025 10:55:36 -0600 Subject: [PATCH 1/3] Defensive access to MIMEType Prevent possible crashes --- .../Sources/Instrumentation/FPRNetworkTrace.m | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/FirebasePerformance/Sources/Instrumentation/FPRNetworkTrace.m b/FirebasePerformance/Sources/Instrumentation/FPRNetworkTrace.m index 9bb4a1c46f2..640a18b95b8 100644 --- a/FirebasePerformance/Sources/Instrumentation/FPRNetworkTrace.m +++ b/FirebasePerformance/Sources/Instrumentation/FPRNetworkTrace.m @@ -251,8 +251,14 @@ - (void)didCompleteRequestWithResponse:(NSURLResponse *)response error:(NSError self.responseCode = (int32_t)HTTPResponse.statusCode; } self.responseError = error; - // Safely copy MIMEType to prevent use after free - NSString *mime = [response.MIMEType copy]; + // Defensive access to MIMEType + NSString *mime = nil; + @try { + // Safely copy MIMEType to prevent use after free + mime = [response.MIMEType copy]; + } @catch (NSException *exception) { + mime = nil; + } self.responseContentType = (mime.length ? mime : nil); [self checkpointState:FPRNetworkTraceCheckpointStateResponseCompleted]; From 898e57511448ba16915229faf99263f0a72b8f8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Rojas?= Date: Thu, 11 Sep 2025 11:10:43 -0600 Subject: [PATCH 2/3] Update FirebasePerformance/Sources/Instrumentation/FPRNetworkTrace.m Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- FirebasePerformance/Sources/Instrumentation/FPRNetworkTrace.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FirebasePerformance/Sources/Instrumentation/FPRNetworkTrace.m b/FirebasePerformance/Sources/Instrumentation/FPRNetworkTrace.m index 640a18b95b8..de32be8e095 100644 --- a/FirebasePerformance/Sources/Instrumentation/FPRNetworkTrace.m +++ b/FirebasePerformance/Sources/Instrumentation/FPRNetworkTrace.m @@ -257,7 +257,7 @@ - (void)didCompleteRequestWithResponse:(NSURLResponse *)response error:(NSError // Safely copy MIMEType to prevent use after free mime = [response.MIMEType copy]; } @catch (NSException *exception) { - mime = nil; + FPRLogWarning(@"MIMETypeException", @"Exception while accessing MIMEType for URL %@: %@. Trace will continue without MIMEType.", self.URLRequest.URL, exception); } self.responseContentType = (mime.length ? mime : nil); [self checkpointState:FPRNetworkTraceCheckpointStateResponseCompleted]; From 4594fa223723035329a45b99e4b8b5b881b38287 Mon Sep 17 00:00:00 2001 From: Jesus Rojas Date: Thu, 11 Sep 2025 12:18:22 -0600 Subject: [PATCH 3/3] Style check --- .../Sources/Instrumentation/FPRNetworkTrace.m | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/FirebasePerformance/Sources/Instrumentation/FPRNetworkTrace.m b/FirebasePerformance/Sources/Instrumentation/FPRNetworkTrace.m index de32be8e095..2b72535833c 100644 --- a/FirebasePerformance/Sources/Instrumentation/FPRNetworkTrace.m +++ b/FirebasePerformance/Sources/Instrumentation/FPRNetworkTrace.m @@ -257,7 +257,10 @@ - (void)didCompleteRequestWithResponse:(NSURLResponse *)response error:(NSError // Safely copy MIMEType to prevent use after free mime = [response.MIMEType copy]; } @catch (NSException *exception) { - FPRLogWarning(@"MIMETypeException", @"Exception while accessing MIMEType for URL %@: %@. Trace will continue without MIMEType.", self.URLRequest.URL, exception); + FPRLogWarning(@"MIMETypeException", + @"Exception while accessing MIMEType for URL %@: %@. Trace will continue " + @"without MIMEType.", + self.URLRequest.URL, exception); } self.responseContentType = (mime.length ? mime : nil); [self checkpointState:FPRNetworkTraceCheckpointStateResponseCompleted];