--- a/Frameworks/AIUtilities Framework/Source/AIKeychain.m Wed Aug 08 22:40:31 2012 +0200
+++ b/Frameworks/AIUtilities Framework/Source/AIKeychain.m Thu Aug 09 03:10:57 2012 +0200
@@ -666,64 +666,61 @@
NSParameterAssert(password != nil);
NSParameterAssert(server != nil);
- NSData *passwordData = [password dataUsingEncoding:NSUTF8StringEncoding];
- NSData *serverData = [server dataUsingEncoding:NSUTF8StringEncoding];
- NSData *domainData = [domain dataUsingEncoding:NSUTF8StringEncoding];
- NSData *accountData = [account dataUsingEncoding:NSUTF8StringEncoding];
- NSData *pathData = [path dataUsingEncoding:NSUTF8StringEncoding];
+ NSData *passwordData = [password dataUsingEncoding:NSUTF8StringEncoding]; + NSData *serverData = [server dataUsingEncoding:NSUTF8StringEncoding]; + NSData *domainData = [domain dataUsingEncoding:NSUTF8StringEncoding]; + NSData *accountData = [account dataUsingEncoding:NSUTF8StringEncoding]; + NSData *pathData = [path dataUsingEncoding:NSUTF8StringEncoding]; + NSAssert( (UINT_MAX >= [passwordData length]) && + (UINT_MAX >= [serverData length]) && + (UINT_MAX >= [domainData length]) && + (UINT_MAX >= [accountData length]) && + (UINT_MAX >= [pathData length]), + @"Attempting to send more data than Keychain can handle. Abort." ); + // If keychainRef is NNULL, the password will be added to the default keychain + OSStatus err = SecKeychainAddInternetPassword(keychainRef, + (UInt32)[serverData length], [serverData bytes], + // Domain is optional, so be sure to handle domain == nil + domainData ? (UInt32)[domainData length] : 0, + domainData ? [domainData bytes] : NULL, + // Account appears optional, even though it isn't so documented + accountData ? (UInt32)[accountData length] : 0, + accountData ? [accountData bytes] : NULL, + // Path appears optional, even though it isn't so documented + pathData ? (UInt32)[pathData length] : 0, + pathData ? [pathData bytes] : NULL, + (UInt32)[passwordData length], [passwordData bytes], - NSAssert( (UINT_MAX >= [passwordData length]) &&
- (UINT_MAX >= [serverData length]) &&
- (UINT_MAX >= [domainData length]) &&
- (UINT_MAX >= [accountData length]) &&
- (UINT_MAX >= [pathData length]),
- @"Attempting to send more data than Keychain can handle. Abort." );
- // If keychainRef is NNULL, the password will be added to the default keychain
- OSStatus err = SecKeychainAddInternetPassword(keychainRef,
- (UInt32)[serverData length], [serverData bytes],
- // Domain is optional, so be sure to handle domain == nil
- domainData ? (UInt32)[domainData length] : 0,
- domainData ? [domainData bytes] : NULL,
- // Account appears optional, even though it isn't so documented
- accountData ? (UInt32)[accountData length] : 0,
- accountData ? [accountData bytes] : NULL,
- // Path appears optional, even though it isn't so documented
- pathData ? (UInt32)[pathData length] : 0,
- pathData ? [pathData bytes] : NULL,
- (UInt32)[passwordData length], [passwordData bytes],
- NSDictionary *userInfo = [NSDictionary dictionaryWithObjectsAndKeys:
- [NSValue valueWithPointer:SecKeychainAddInternetPassword], AIKEYCHAIN_ERROR_USERINFO_SECURITYFUNCTION,
- @"SecKeychainAddInternetPassword", AIKEYCHAIN_ERROR_USERINFO_SECURITYFUNCTIONNAME,
- AI_LOCALIZED_SECURITY_ERROR_DESCRIPTION(err), AIKEYCHAIN_ERROR_USERINFO_ERRORDESCRIPTION,
- server, AIKEYCHAIN_ERROR_USERINFO_SERVER,
- domain, AIKEYCHAIN_ERROR_USERINFO_DOMAIN,
- account, AIKEYCHAIN_ERROR_USERINFO_ACCOUNT,
- NSFileTypeForHFSTypeCode(protocol), AIKEYCHAIN_ERROR_USERINFO_PROTOCOL,
- NSFileTypeForHFSTypeCode(authType), AIKEYCHAIN_ERROR_USERINFO_AUTHENTICATIONTYPE,
- [NSValue valueWithPointer:keychainRef], AIKEYCHAIN_ERROR_USERINFO_KEYCHAIN,
- error = [NSError errorWithDomain:AIKEYCHAIN_ERROR_DOMAIN code:err userInfo:userInfo];
+ NSDictionary *userInfo = [NSDictionary dictionaryWithObjectsAndKeys: + [NSValue valueWithPointer:SecKeychainAddInternetPassword], AIKEYCHAIN_ERROR_USERINFO_SECURITYFUNCTION, + @"SecKeychainAddInternetPassword", AIKEYCHAIN_ERROR_USERINFO_SECURITYFUNCTIONNAME, + AI_LOCALIZED_SECURITY_ERROR_DESCRIPTION(err), AIKEYCHAIN_ERROR_USERINFO_ERRORDESCRIPTION, + server, AIKEYCHAIN_ERROR_USERINFO_SERVER, + domain, AIKEYCHAIN_ERROR_USERINFO_DOMAIN, + account, AIKEYCHAIN_ERROR_USERINFO_ACCOUNT, + NSFileTypeForHFSTypeCode(protocol), AIKEYCHAIN_ERROR_USERINFO_PROTOCOL, + NSFileTypeForHFSTypeCode(authType), AIKEYCHAIN_ERROR_USERINFO_AUTHENTICATIONTYPE, + [NSValue valueWithPointer:keychainRef], AIKEYCHAIN_ERROR_USERINFO_KEYCHAIN, + error = [NSError errorWithDomain:AIKEYCHAIN_ERROR_DOMAIN code:err userInfo:userInfo];
- (BOOL)addInternetPassword:(NSString *)password forServer:(NSString *)server account:(NSString *)account protocol:(SecProtocolType)protocol error:(out NSError **)outError
--- a/Frameworks/Adium Framework/Source/AIMetaContact.m Wed Aug 08 22:40:31 2012 +0200
+++ b/Frameworks/Adium Framework/Source/AIMetaContact.m Thu Aug 09 03:10:57 2012 +0200
@@ -683,12 +683,14 @@
+ (NSArray *)_forwardedProperties
static NSArray *properties = nil;
+ static dispatch_once_t onceToken; - if (properties == nil) {
+ dispatch_once(&onceToken, ^{ properties = [[NSArray alloc] initWithObjects:@"isOnline", @"isBlocked",
@"isIdle", @"notAStranger", @"isMobile", @"signedOff", @"signedOn",
@"alwaysOnline", @"unviewedContent", @"unviewedMention", nil];