Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,12 @@ - (void)invalidate {
: (FIRApp *)firebaseApp
: (NSString *)databaseId
: (nonnull NSNumber *)transactionId) {
// Validate transactionId to prevent crash
if (transactionId == nil) {
DLog(@"Error: transactionId is nil in transactionBegin");
return;
}

FIRFirestore *firestore = [RNFBFirestoreCommon getFirestoreForApp:firebaseApp
databaseId:databaseId];
__block BOOL aborted = false;
Expand All @@ -152,8 +158,16 @@ - (void)invalidate {
transactionState[@"semaphore"] = semaphore;
transactionState[@"transaction"] = transaction;

if (!transactions[[transactionId stringValue]]) {
transactions[[transactionId stringValue]] = transactionState;
// Safe dictionary key handling
NSString *transactionKey = [transactionId stringValue];
if (transactionKey != nil && !transactions[transactionKey]) {
transactions[transactionKey] = transactionState;
} else {
DLog(@"Invalid transactionId provided: %@", transactionId);
*errorPointer = [NSError errorWithDomain:FIRFirestoreErrorDomain
code:FIRFirestoreErrorCodeInvalidArgument
userInfo:@{NSLocalizedDescriptionKey: @"Invalid transaction ID"}];
return nil;
}

// build and send transaction update event
Expand Down
Loading