// Books "Persistent ID" reaches asset.identifier without path validation.
NSString *source =
[@"/var/mobile/Media/Airlock/Book"
stringByAppendingPathComponent:asset.identifier];
// FileComplete.AssetPath controls asset.path.
NSString *destination =
[[@"/var/mobile/Media/"
stringByAppendingPathComponent:asset.path]
stringByStandardizingPath];
// This checks the path string, not where a symlink resolves.
if (![destination hasPrefix:@"/var/mobile/Media/"])
return;
// The source is unchecked and the destination follows ancestor symlinks.
[fileManager moveItemAtPath:source
toPath:destination
error:&error];