Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- swift하고싶다
- Unable to install
- 'IPHONEOS_DEPLOYMENT_TARGET' is set to 10.0
- Project File List
- 설명
- arch -arm64 brew install
- The iOS deployment target
- ios
- Swfit
- Deploument Info
- 버전분기
- 코드설게
- swift하고싶다.
- Swift
- iOS개발
- git
- Xcode
- HomeBrew #MAC
- 의존성
- error
- duplicate symbols for architecture arm 64
- 'AudioSessionSetActive' is deprecated: first deprecated in iOS 7.0 - no longer supported
- objectiv-C
- FIRApp configure
- Cannot install under Rosetta 2 in ARM default prefix (/opt/homebrew)!
- The image set has an unassigned child.
- 영어읽어라
- 'openURL:' is deprecated: first deprecated in iOS 10.0
- 프로젝트기본설명
- objectiveC
Archives
- Today
- Total
행복한 세상의 니노
[Xcode #2] 누수찾기 AES256DecryptWithKey 본문
누수란? 메모리가 해제되지않는것도 누수라고한다.
똑같은 시간을 비교해봣을때 메모리 증가가 여기는 1.6GiB
여기는 1.55GIB 조끔은 나아졋음을 확인했다.
이 부분의 문제점은
+ (NSData *)AES256DecryptWithKey:(uint8_t *)key iv:(uint8_t *)iv data:(uint8_t *)data dataSize:(int)size {
size_t bufferSize = size + kCCBlockSizeAES128;
void *buffer = malloc(bufferSize);
size_t decryptedSize = 0;
CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt,
kCCAlgorithmAES,
// kCCOptionPKCS7Padding + kCCOptionECBMode, // ecb mode
kCCOptionPKCS7Padding, // cbc mode
key, kCCKeySizeAES256, // key
iv, // initialization vector (optional)
data, size, // input
buffer, bufferSize, // output
&decryptedSize);
if (cryptStatus == kCCSuccess) {
// return NSData dataWithBytesNoCopy:buffer length:decryptedSize];
return [[NSData alloc] initWithData:[NSData dataWithBytesNoCopy:buffer length:decryptedSize]];
}
free(buffer);
return nil;
}
이렇게 바꿔서 처리했다.
이렇게 처리했더니 누수가 또 생겼다.
+ (NSData *)AES256DecryptWithKey:(uint8_t *)key iv:(uint8_t *)iv data:(uint8_t *)data dataSize:(int)size {
size_t bufferSize = size + kCCBlockSizeAES128;
void *buffer = malloc(bufferSize);
size_t decryptedSize = 0;
NSData *decrypted = [[NSData alloc] init];
CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt,
kCCAlgorithmAES,
// kCCOptionPKCS7Padding + kCCOptionECBMode, // ecb mode
kCCOptionPKCS7Padding, // cbc mode
key, kCCKeySizeAES256, // key
iv, // initialization vector (optional)
data, size, // input
buffer, bufferSize, // output
&decryptedSize);
if (cryptStatus == kCCSuccess) {
decrypted = [NSData dataWithBytes:buffer length:decryptedSize];
free(buffer);
return decrypted;
}
free(buffer);
return nil;
}
이렇게 처리하니가 누수 발생 안하고 누수도 줄었다..
반응형