|
|
@ -85,7 +85,11 @@ static NSString *keychainDBPassAccount = @"TSDatabasePass";
|
|
|
|
|
|
|
|
|
|
|
|
- (nullable Class)unarchiver:(NSKeyedUnarchiver *)unarchiver cannotDecodeObjectOfClassName:(NSString *)name originalClasses:(NSArray<NSString *> *)classNames
|
|
|
|
- (nullable Class)unarchiver:(NSKeyedUnarchiver *)unarchiver cannotDecodeObjectOfClassName:(NSString *)name originalClasses:(NSArray<NSString *> *)classNames
|
|
|
|
{
|
|
|
|
{
|
|
|
|
DDLogError(@"[OWSUnarchiverDelegate] Ignoring unknown class name: %@. Was the class definition deleted?", name);
|
|
|
|
OWSProdErrorWParams(@"storage_error_could_not_decode_class", ^{
|
|
|
|
|
|
|
|
return (@{
|
|
|
|
|
|
|
|
@"class_name" : name,
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
});
|
|
|
|
return [OWSUnknownObject class];
|
|
|
|
return [OWSUnknownObject class];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -180,13 +184,14 @@ static NSString *keychainDBPassAccount = @"TSDatabasePass";
|
|
|
|
return [unarchiver decodeObjectForKey:@"root"];
|
|
|
|
return [unarchiver decodeObjectForKey:@"root"];
|
|
|
|
} @catch (NSException *exception) {
|
|
|
|
} @catch (NSException *exception) {
|
|
|
|
// Sync log in case we bail.
|
|
|
|
// Sync log in case we bail.
|
|
|
|
DDLogError(@"%@ Unarchiving key:%@ from collection:%@ and data %@ failed with error: %@",
|
|
|
|
OWSProdErrorWParams(@"storage_error_deserialization", ^{
|
|
|
|
self.tag,
|
|
|
|
return (@{
|
|
|
|
key,
|
|
|
|
@"collection" : collection,
|
|
|
|
collection,
|
|
|
|
kOWSProdAssertParameterNSExceptionName : exception.name,
|
|
|
|
data,
|
|
|
|
kOWSProdAssertParameterNSExceptionReason : exception.reason,
|
|
|
|
exception.reason);
|
|
|
|
kOWSProdAssertParameterNSExceptionClassName : NSStringFromClass([exception class]),
|
|
|
|
DDLogError(@"%@ Raising exception.", self.tag);
|
|
|
|
});
|
|
|
|
|
|
|
|
});
|
|
|
|
@throw exception;
|
|
|
|
@throw exception;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
};
|
|
|
@ -255,7 +260,7 @@ static NSString *keychainDBPassAccount = @"TSDatabasePass";
|
|
|
|
BOOL success = [ressourceURL setResourceValues:resourcesAttrs error:&error];
|
|
|
|
BOOL success = [ressourceURL setResourceValues:resourcesAttrs error:&error];
|
|
|
|
|
|
|
|
|
|
|
|
if (error || !success) {
|
|
|
|
if (error || !success) {
|
|
|
|
DDLogError(@"Error while removing files from backup: %@", error.description);
|
|
|
|
OWSProdErrorWNSError(@"storage_error_file_protecion", error);
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -372,14 +377,14 @@ static NSString *keychainDBPassAccount = @"TSDatabasePass";
|
|
|
|
NSError *keySetError;
|
|
|
|
NSError *keySetError;
|
|
|
|
[SAMKeychain setPassword:newDBPassword forService:keychainService account:keychainDBPassAccount error:&keySetError];
|
|
|
|
[SAMKeychain setPassword:newDBPassword forService:keychainService account:keychainDBPassAccount error:&keySetError];
|
|
|
|
if (keySetError) {
|
|
|
|
if (keySetError) {
|
|
|
|
DDLogError(@"%@ Setting DB password failed with error: %@", self.tag, keySetError);
|
|
|
|
OWSProdErrorWNSError(@"storage_error_could_not_store_database_password", keySetError);
|
|
|
|
|
|
|
|
|
|
|
|
[self deletePasswordFromKeychain];
|
|
|
|
[self deletePasswordFromKeychain];
|
|
|
|
|
|
|
|
|
|
|
|
[NSException raise:TSStorageManagerExceptionNameDatabasePasswordUnwritable
|
|
|
|
[NSException raise:TSStorageManagerExceptionNameDatabasePasswordUnwritable
|
|
|
|
format:@"Setting DB password failed with error: %@", keySetError];
|
|
|
|
format:@"Setting DB password failed with error: %@", keySetError];
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
DDLogError(@"Succesfully set new DB password.");
|
|
|
|
DDLogWarn(@"Succesfully set new DB password.");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return newDBPassword;
|
|
|
|
return newDBPassword;
|
|
|
|