У меня есть приложение, которое проверяет подписи кода. Я использую SecStaticCodeCheckValidity, чтобы проверить, действительна ли подпись. Прежде чем я вызову метод, у меня относительно небольшой объем памяти, но после завершения метода мой объем памяти почти удваивается, и я не знаю, где именно это происходит.Почему метод «SecStaticCodeCheckValidity» сверяет мою память?
OSStatus errorCode=SecStaticCodeCheckValidity(_codeReference, kSecCSConsiderExpiration,NULL);
CFRelease(_codeReference);
switch(errorCode)
{
case errSecInvalidRoot:validity=INVALID;
break;
case errSecCRLNotValidYet:validity=NOT_VALID_YET;
break;
case errSecCertificateRevoked:validity=REVOKED;
break;
case errSecCertificateExpired:validity=EXPIRED;
break;
case errSecSuccess:_signatureValidity=VALID;
break;
default: validity=BROKEN;
break;
}
Теперь, что именно я должен выпустить, когда я уже выпустил «_codeReference
»?
UPDATE:
#import <Foundation/Foundation.h>
#import <Security/Security.h>
int main(int argc, const char * argv[]) {
SecStaticCodeRef codeRef;
CFURLRef appURL=CFURLCreateWithFileSystemPath(kCFAllocatorDefault, CFSTR("/Applications/Xcode.app"), kCFURLPOSIXPathStyle, YES);
SecStaticCodeCreateWithPath(appURL, kSecCSDefaultFlags, &codeRef);
CFRelease(appURL);
CFDictionaryRef signDic;
SecCodeCopySigningInformation(codeRef, kSecCSSigningInformation, &signDic);
if(!CFDictionaryContainsKey(signDic,kSecCodeInfoIdentifier))
{
NSLog(@"Bundle not signed....");
return 0;
}
CFRelease(signDic);
//Verify signature
OSStatus code=SecStaticCodeCheckValidity(codeRef, kSecCSConsiderExpiration, NULL);
CFRelease(codeRef);
NSString*output;
switch(code)
{
case errSecInvalidRoot:[email protected]"INVALID";
break;
case errSecCRLNotValidYet:[email protected]"NOT_VALID_YET";
break;
case errSecCertificateRevoked:[email protected]"REVOKED";
break;
case errSecCertificateExpired:[email protected]"EXPIRED";
break;
case errSecSuccess:[email protected]"VALID";
break;
default: [email protected]"BROKEN";
break;
}
NSLog(@"%@",output);
return 0;
}
Я обновил свой SampleApplication и контролировать приложение в инструменты. Это означает, что я не правильно освобождаю память в своем коде.
Откуда вы знаете, что это действительно утечка? –
Я отслеживаю память с помощью Activity Monitor и Xcode. В Xcode я использую график памяти для отладки. Я просто подумал, что я могу выполнить проверку над оболочкой с помощью кода, но, к сожалению, у кодов, похоже, такая же проблема. – ok404
'codeign' не работает постоянно; он запускается, а затем завершается. В вашем коде нет ничего, хотя это должно протекать. Если у вас есть отладочные журналы поведения, я рекомендую вам опубликовать их с вашим вопросом. –