Skip to content

Commit 86acd5a

Browse files
authored
fix(auth): error handling around accessing credentials (#5509)
1 parent fa5792c commit 86acd5a

File tree

1 file changed

+32
-12
lines changed

1 file changed

+32
-12
lines changed

AWSCore/Authentication/AWSCredentialsProvider.m

Lines changed: 32 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -279,13 +279,23 @@ - (void)setInternalCredentials:(AWSCredentials *)internalCredentials {
279279
@synchronized (self) {
280280
_internalCredentials = internalCredentials;
281281

282-
self.keychain[AWSCredentialsProviderKeychainAccessKeyId] = internalCredentials.accessKey;
283-
self.keychain[AWSCredentialsProviderKeychainSecretAccessKey] = internalCredentials.secretKey;
284-
self.keychain[AWSCredentialsProviderKeychainSessionToken] = internalCredentials.sessionKey;
285-
if (internalCredentials.expiration) {
286-
self.keychain[AWSCredentialsProviderKeychainExpiration] = [NSString stringWithFormat:@"%f", [internalCredentials.expiration timeIntervalSince1970]];
282+
// Handle the case when internalCredentials is nil
283+
if (internalCredentials) {
284+
// Store credentials in keychain when credentials are not nil
285+
self.keychain[AWSCredentialsProviderKeychainAccessKeyId] = internalCredentials.accessKey;
286+
self.keychain[AWSCredentialsProviderKeychainSecretAccessKey] = internalCredentials.secretKey;
287+
self.keychain[AWSCredentialsProviderKeychainSessionToken] = internalCredentials.sessionKey;
288+
if (internalCredentials.expiration) {
289+
self.keychain[AWSCredentialsProviderKeychainExpiration] = [NSString stringWithFormat:@"%f", [internalCredentials.expiration timeIntervalSince1970]];
290+
} else {
291+
self.keychain[AWSCredentialsProviderKeychainExpiration] = nil;
292+
}
287293
} else {
288-
self.keychain[AWSCredentialsProviderKeychainExpiration] = nil;
294+
// Clear keychain entries when credentials are nil
295+
[self.keychain removeItemForKey:AWSCredentialsProviderKeychainAccessKeyId];
296+
[self.keychain removeItemForKey:AWSCredentialsProviderKeychainSecretAccessKey];
297+
[self.keychain removeItemForKey:AWSCredentialsProviderKeychainSessionToken];
298+
[self.keychain removeItemForKey:AWSCredentialsProviderKeychainExpiration];
289299
}
290300
}
291301
}
@@ -837,13 +847,23 @@ - (void)setInternalCredentials:(AWSCredentials *)internalCredentials {
837847
@synchronized (self) {
838848
_internalCredentials = internalCredentials;
839849

840-
self.keychain[AWSCredentialsProviderKeychainAccessKeyId] = internalCredentials.accessKey;
841-
self.keychain[AWSCredentialsProviderKeychainSecretAccessKey] = internalCredentials.secretKey;
842-
self.keychain[AWSCredentialsProviderKeychainSessionToken] = internalCredentials.sessionKey;
843-
if (internalCredentials.expiration) {
844-
self.keychain[AWSCredentialsProviderKeychainExpiration] = [NSString stringWithFormat:@"%f", [internalCredentials.expiration timeIntervalSince1970]];
850+
// Handle the case when internalCredentials is nil
851+
if (internalCredentials) {
852+
// Store credentials in keychain when credentials are not nil
853+
self.keychain[AWSCredentialsProviderKeychainAccessKeyId] = internalCredentials.accessKey;
854+
self.keychain[AWSCredentialsProviderKeychainSecretAccessKey] = internalCredentials.secretKey;
855+
self.keychain[AWSCredentialsProviderKeychainSessionToken] = internalCredentials.sessionKey;
856+
if (internalCredentials.expiration) {
857+
self.keychain[AWSCredentialsProviderKeychainExpiration] = [NSString stringWithFormat:@"%f", [internalCredentials.expiration timeIntervalSince1970]];
858+
} else {
859+
self.keychain[AWSCredentialsProviderKeychainExpiration] = nil;
860+
}
845861
} else {
846-
self.keychain[AWSCredentialsProviderKeychainExpiration] = nil;
862+
// Clear keychain entries when credentials are nil
863+
[self.keychain removeItemForKey:AWSCredentialsProviderKeychainAccessKeyId];
864+
[self.keychain removeItemForKey:AWSCredentialsProviderKeychainSecretAccessKey];
865+
[self.keychain removeItemForKey:AWSCredentialsProviderKeychainSessionToken];
866+
[self.keychain removeItemForKey:AWSCredentialsProviderKeychainExpiration];
847867
}
848868
}
849869
}

0 commit comments

Comments
 (0)