X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/fa7225c82381bac4432a6edf16f53b5370238d85..refs/heads/master:/OSX/libsecurity_mds/lib/mdsapi.cpp diff --git a/OSX/libsecurity_mds/lib/mdsapi.cpp b/OSX/libsecurity_mds/lib/mdsapi.cpp index d594fa9b..3ab20d1d 100644 --- a/OSX/libsecurity_mds/lib/mdsapi.cpp +++ b/OSX/libsecurity_mds/lib/mdsapi.cpp @@ -36,6 +36,7 @@ #include #include #include +#include "LegacyAPICounts.h" #define MSApiDebug(args...) secinfo("MDS_API", ## args) @@ -271,19 +272,22 @@ MDS_Initialize (const CSSM_GUID *inCallerGuid, MDS_FUNCS_PTR outDlFunctions, MDS_HANDLE *outMDSHandle) { +// The clang analyzer is not a fan of handing handles to your caller and trusting them to release later. +#ifndef __clang_analyzer__ BEGIN_API Required (outDlFunctions); Required (outMDSHandle) = (new MDSSession (Guid::optional(inCallerGuid), Required(inMemoryFunctions)))->handle (); *outDlFunctions = gMDSFunctionTable; END_API(MDS) +#endif } CSSM_RETURN CSSMAPI MDS_Terminate (MDS_HANDLE inMDSHandle) { BEGIN_API - auto_ptr aMDSSession (&HandleObject::findAndKill (inMDSHandle, CSSMERR_CSSM_INVALID_ADDIN_HANDLE)); + unique_ptr aMDSSession (&HandleObject::findAndKill (inMDSHandle, CSSMERR_CSSM_INVALID_ADDIN_HANDLE)); aMDSSession->terminate (); // Even if terminate throws the MDSSession object will be deleted. END_API(MDS) }