-
[Xcode #2] 누수찾기 AES256DecryptWithKey카테고리 없음 2023. 7. 13. 11:15
누수란? 메모리가 해제되지않는것도 누수라고한다.
똑같은 시간을 비교해봣을때 메모리 증가가 여기는 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; }
이렇게 처리하니가 누수 발생 안하고 누수도 줄었다..