Skip to content

Commit 1095aaf

Browse files
authored
Fix secure coding bugs in MFA (#10633)
1 parent bc3bccd commit 1095aaf

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

FirebaseAuth/Sources/MultiFactor/FIRMultiFactor.m

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -178,17 +178,20 @@ + (BOOL)supportsSecureCoding {
178178
- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder {
179179
self = [self init];
180180
if (self) {
181+
NSSet *enrolledFactorsClasses = [NSSet setWithArray:@[
182+
[NSArray class], [FIRMultiFactorInfo class], [FIRPhoneMultiFactorInfo class]
183+
]];
181184
NSArray<FIRMultiFactorInfo *> *enrolledFactors =
182-
[aDecoder decodeObjectForKey:kEnrolledFactorsCodingKey];
185+
[aDecoder decodeObjectOfClasses:enrolledFactorsClasses forKey:kEnrolledFactorsCodingKey];
183186
_enrolledFactors = enrolledFactors;
184-
_user = [aDecoder decodeObjectOfClass:[FIRUser class] forKey:kUserCodingKey];
187+
// Do not decode `user` weak property.
185188
}
186189
return self;
187190
}
188191

189192
- (void)encodeWithCoder:(NSCoder *)aCoder {
190193
[aCoder encodeObject:_enrolledFactors forKey:kEnrolledFactorsCodingKey];
191-
[aCoder encodeObject:_user forKey:kUserCodingKey];
194+
// Do not encode `user` weak property.
192195
}
193196

194197
@end

FirebaseAuth/Sources/User/FIRUser.m

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -380,6 +380,7 @@ - (nullable instancetype)initWithCoder:(NSCoder *)aDecoder {
380380
heartbeatLogger:nil];
381381
#if TARGET_OS_IOS
382382
_multiFactor = multiFactor ?: [[FIRMultiFactor alloc] init];
383+
_multiFactor.user = self;
383384
#endif
384385
}
385386
return self;

0 commit comments

Comments
 (0)