diff --git a/MacPass/DDHotKey+MacPassAdditions.m b/MacPass/DDHotKey+MacPassAdditions.m index 1806df97..ab9c7f3f 100644 --- a/MacPass/DDHotKey+MacPassAdditions.m +++ b/MacPass/DDHotKey+MacPassAdditions.m @@ -29,12 +29,10 @@ @implementation DDHotKey (MPKeydata) + (NSData *)hotKeyDataWithKeyCode:(unsigned short)keyCode modifierFlags:(NSUInteger)flags { - NSMutableData *data = [[NSMutableData alloc] init]; - NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; + NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initRequiringSecureCoding:YES]; [archiver encodeInt:keyCode forKey:NSStringFromSelector(@selector(keyCode))]; [archiver encodeInteger:flags forKey:NSStringFromSelector(@selector(modifierFlags))]; - [archiver finishEncoding]; - return [data copy]; + return [archiver.encodedData copy]; } + (NSData *)defaultHotKeyData { @@ -73,7 +71,13 @@ if(keyCode == NULL || modifierFlags == NULL || data == nil) { return NO; } - NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data]; + + NSError *error; + NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingFromData:data error:&error]; + if(error) { + NSLog(@"Error while trying to decode DDHotKey %@", error.localizedDescription); + return NO; + } *keyCode = [unarchiver decodeIntForKey:NSStringFromSelector(@selector(keyCode))]; *modifierFlags = [unarchiver decodeIntegerForKey:NSStringFromSelector(@selector(modifierFlags))]; return YES;