Compare commits

..

No commits in common. "mkirk/sec-error" and "master" have entirely different histories.

3 changed files with 13 additions and 9 deletions

View File

@ -35,6 +35,12 @@ CFHTTPMessageRef SRHTTPConnectMessageCreate(NSURLRequest *request,
// Set host first so it defaults
CFHTTPMessageSetHeaderFieldValue(message, CFSTR("Host"), (__bridge CFStringRef)_SRHTTPConnectMessageHost(url));
NSMutableData *keyBytes = [[NSMutableData alloc] initWithLength:16];
int result = SecRandomCopyBytes(kSecRandomDefault, keyBytes.length, keyBytes.mutableBytes);
if (result != 0) {
//TODO: (nlutsenko) Check if there was an error.
}
// Apply cookies if any have been provided
if (cookies) {
NSDictionary<NSString *, NSString *> *messageCookies = [NSHTTPCookie requestHeaderFieldsWithCookies:cookies];

View File

@ -15,13 +15,9 @@ NS_ASSUME_NONNULL_BEGIN
NSData *SRRandomData(NSUInteger length)
{
NSMutableData *_Nullable data = [NSMutableData dataWithLength:length];
if (data == nil) {
[NSException raise:NSInternalInconsistencyException format:@"Failed to allocate random data"];
}
NSMutableData *data = [NSMutableData dataWithLength:length];
int result = SecRandomCopyBytes(kSecRandomDefault, data.length, data.mutableBytes);
if (result != errSecSuccess) {
if (result != 0) {
[NSException raise:NSInternalInconsistencyException format:@"Failed to generate random bytes with OSStatus: %d", result];
}
return data;

View File

@ -1380,10 +1380,12 @@ static const size_t SRFrameHeaderOverhead = 32;
const uint8_t *unmaskedPayloadBuffer = (uint8_t *)data.bytes;
uint8_t *maskKey = frameBuffer + frameBufferSize;
size_t randomBytesSize = sizeof(uint32_t);
NSData *randomData = SRRandomData(randomBytesSize);
[randomData getBytes:maskKey range:NSMakeRange(0, randomBytesSize)];
int result = SecRandomCopyBytes(kSecRandomDefault, randomBytesSize, maskKey);
if (result != 0) {
//TODO: (nlutsenko) Check if there was an error.
}
frameBufferSize += randomBytesSize;
// Copy and unmask the buffer