X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/fa7225c82381bac4432a6edf16f53b5370238d85..918dce6758f4f57e8c0b650cb5eead501f6684ca:/OSX/libsecurity_codesigning/lib/diskimagerep.cpp?ds=inline diff --git a/OSX/libsecurity_codesigning/lib/diskimagerep.cpp b/OSX/libsecurity_codesigning/lib/diskimagerep.cpp index a24b9e59..86b056c0 100644 --- a/OSX/libsecurity_codesigning/lib/diskimagerep.cpp +++ b/OSX/libsecurity_codesigning/lib/diskimagerep.cpp @@ -25,6 +25,7 @@ // diskimagerep - DiskRep representing a single read-only compressed disk image file // #include "diskimagerep.h" +#include "notarization.h" #include "sigblob.h" #include "CodeSigner.h" #include @@ -68,13 +69,19 @@ bool DiskImageRep::readHeader(FileDesc& fd, UDIFFileHeader& header) // Object management. // DiskImageRep::DiskImageRep(const char *path) - : SingleDiskRep(path) + : SingleDiskRep(path), mSigningData(NULL) { this->setup(); } +DiskImageRep::~DiskImageRep() +{ + free((void*)mSigningData); +} + void DiskImageRep::setup() { + free((void*)mSigningData); mSigningData = NULL; // the UDIF "header" is in fact the last 512 bytes of the file, with no particular alignment @@ -210,7 +217,7 @@ void DiskImageRep::Writer::component(CodeDirectory::SpecialSlot slot, CFDataRef // void DiskImageRep::Writer::flush() { - delete mSigningData; // ditch previous blob just in case + free((void*)mSigningData); // ditch previous blob just in case mSigningData = Maker::make(); // assemble new signature SuperBlob // write signature superblob @@ -235,6 +242,15 @@ void DiskImageRep::Writer::addDiscretionary(CodeDirectory::Builder &builder) { } +void DiskImageRep::registerStapledTicket() +{ + CFRef data = NULL; + if (mSigningData) { + data.take(mSigningData->component(cdTicketSlot)); + registerStapledTicketInDMG(data); + } +} + } // end namespace CodeSigning } // end namespace Security