diff options
-rw-r--r-- | Source/SPConnectionDelegate.m | 2 | ||||
-rw-r--r-- | Source/SPDatabaseDocument.m | 7 | ||||
-rw-r--r-- | Source/SPFavoritesPreferencePane.m | 10 | ||||
-rw-r--r-- | Source/SPKeychain.m | 2 |
4 files changed, 9 insertions, 12 deletions
diff --git a/Source/SPConnectionDelegate.m b/Source/SPConnectionDelegate.m index f02d5648..58482d1c 100644 --- a/Source/SPConnectionDelegate.m +++ b/Source/SPConnectionDelegate.m @@ -75,7 +75,7 @@ { // If no keychain item is available, return an empty password - if (![connectionController connectionKeychainItemName]) return @""; + if (![connectionController connectionKeychainItemName]) return nil; // Otherwise, pull the password from the keychain using the details from this connection SPKeychain *keychain = [[SPKeychain alloc] init]; diff --git a/Source/SPDatabaseDocument.m b/Source/SPDatabaseDocument.m index 4d6e4bda..20379ede 100644 --- a/Source/SPDatabaseDocument.m +++ b/Source/SPDatabaseDocument.m @@ -4143,11 +4143,8 @@ static NSString *SPCreateSyntx = @"SPCreateSyntax"; if (includePasswords) { NSString *pw = [self keychainPasswordForConnection:nil]; - if (![pw length]) pw = [connectionController password]; - if (pw) - [connection setObject:pw forKey:@"password"]; - else - [connection setObject:@"" forKey:@"password"]; + if (!pw) pw = [connectionController password]; + if (pw) [connection setObject:pw forKey:@"password"]; if ([connectionController type] == SPSSHTunnelConnection) { NSString *sshpw = [self keychainPasswordForSSHConnection:nil]; diff --git a/Source/SPFavoritesPreferencePane.m b/Source/SPFavoritesPreferencePane.m index 5cc01682..7641e5c8 100644 --- a/Source/SPFavoritesPreferencePane.m +++ b/Source/SPFavoritesPreferencePane.m @@ -499,15 +499,15 @@ NSString *keychainAccount = [keychain accountForUser:[currentFavorite objectForKey:@"user"] host:(([[currentFavorite objectForKey:@"type"] integerValue] == SPSocketConnection)?@"localhost":[currentFavorite objectForKey:@"host"]) database:[currentFavorite objectForKey:@"database"]]; NSString *passwordValue = [keychain getPasswordForName:keychainName account:keychainAccount]; - [standardPasswordField setStringValue:passwordValue]; - [socketPasswordField setStringValue:passwordValue]; - [sshSQLPasswordField setStringValue:passwordValue]; + [standardPasswordField setStringValue:passwordValue?passwordValue:@""]; + [socketPasswordField setStringValue:passwordValue?passwordValue:@""]; + [sshSQLPasswordField setStringValue:passwordValue?passwordValue:@""]; // Retrieve the SSH keychain password if appropriate. NSString *keychainSSHName = [keychain nameForSSHForFavoriteName:[currentFavorite objectForKey:@"name"] id:[currentFavorite objectForKey:@"id"]]; NSString *keychainSSHAccount = [keychain accountForSSHUser:[currentFavorite objectForKey:@"sshUser"] sshHost:[currentFavorite objectForKey:@"sshHost"]]; - - [sshPasswordField setStringValue:[keychain getPasswordForName:keychainSSHName account:keychainSSHAccount]]; + NSString *sshPasswordValue = [keychain getPasswordForName:keychainSSHName account:keychainSSHAccount]; + [sshPasswordField setStringValue:sshPasswordValue?sshPasswordValue:@""]; favoriteNameFieldWasTouched = YES; } diff --git a/Source/SPKeychain.m b/Source/SPKeychain.m index bb010d3b..931f14d7 100644 --- a/Source/SPKeychain.m +++ b/Source/SPKeychain.m @@ -120,7 +120,7 @@ void *passwordData; UInt32 passwordLength; SecKeychainItemRef itemRef; - NSString *password = @""; + NSString *password = nil; // Check supplied variables and replaces nils with empty strings if (!name) name = @""; |