Skip to content

Instantly share code, notes, and snippets.

@pookjw
Created February 22, 2025 13:16
Show Gist options
  • Save pookjw/d556a8c2780de2c9be5d3de2c74229e9 to your computer and use it in GitHub Desktop.
Save pookjw/d556a8c2780de2c9be5d3de2c74229e9 to your computer and use it in GitHub Desktop.
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initRequiringSecureCoding:YES];
int *integers = malloc(sizeof(int) * 3);
integers[0] = 0;
integers[1] = 1;
integers[2] = 2;
[archiver encodeBytes:integers length:sizeof(int) * 3];
[archiver finishEncoding];
NSData *data = archiver.encodedData;
NSError * _Nullable error = nil;
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingFromData:data error:&error];
assert(error == nil);
int *decoded = [unarchiver decodeBytesWithMinimumLength:sizeof(int) * 3];
assert(decoded != NULL);
assert(decoded[0] == integers[0]);
assert(decoded[1] == integers[1]);
assert(decoded[2] == integers[2]);
free(integers);
int *invalidPointer = [unarchiver decodeBytesWithMinimumLength:sizeof(int) * 100];
assert(invalidPointer == NULL);
}
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment