VOID SMBGSSContextFree( HANDLE hSMBGSSContext ) { DWORD dwMinorStatus = 0; PSMB_GSS_SEC_CONTEXT pContext = (PSMB_GSS_SEC_CONTEXT)hSMBGSSContext; if (pContext) { if (pContext->target_name != NULL) { gss_release_name(&dwMinorStatus, &pContext->target_name); } if (pContext->pGSSContext && (*pContext->pGSSContext != GSS_C_NO_CONTEXT)) { gss_delete_sec_context( &dwMinorStatus, pContext->pGSSContext, GSS_C_NO_BUFFER); LwIoFreeMemory(pContext->pGSSContext); } if (pContext->credHandle) { gss_release_cred(&dwMinorStatus, &pContext->credHandle); } LwIoFreeMemory(pContext); } }
VOID LwIoDeleteCreds( PIO_CREDS pCreds ) { if (pCreds) { switch (pCreds->type) { case IO_CREDS_TYPE_PLAIN: IO_SAFE_FREE_MEMORY(pCreds->payload.plain.pwszUsername); IO_SAFE_FREE_MEMORY(pCreds->payload.plain.pwszDomain); IO_SAFE_FREE_MEMORY(pCreds->payload.plain.pwszPassword); break; case IO_CREDS_TYPE_KRB5_CCACHE: IO_SAFE_FREE_MEMORY(pCreds->payload.krb5Ccache.pwszPrincipal); IO_SAFE_FREE_MEMORY(pCreds->payload.krb5Ccache.pwszCachePath); break; case IO_CREDS_TYPE_KRB5_TGT: IO_SAFE_FREE_MEMORY(pCreds->payload.krb5Tgt.pwszClientPrincipal); IO_SAFE_FREE_MEMORY(pCreds->payload.krb5Tgt.pwszServerPrincipal); IO_SAFE_FREE_MEMORY(pCreds->payload.krb5Tgt.pKeyData); IO_SAFE_FREE_MEMORY(pCreds->payload.krb5Tgt.pTgtData); break; } LwIoFreeMemory(pCreds); } }
static VOID SrvFinderFreeSearchSpace( IN PSRV_SEARCH_SPACE pSearchSpace ) { if (pSearchSpace->pMutex) { pthread_mutex_destroy(&pSearchSpace->mutex); } if (pSearchSpace->hFile) { IoCloseFile(pSearchSpace->hFile); } if (pSearchSpace->pFileInfo) { SrvFreeMemory(pSearchSpace->pFileInfo); } if (pSearchSpace->pwszSearchPattern) { LwIoFreeMemory(pSearchSpace->pwszSearchPattern); } SrvFreeMemory(pSearchSpace); }
VOID SMBFreeString( PSTR pszString ) { LwIoFreeMemory(pszString); }
VOID SMBFreeNullTerminatedStringArray( PSTR * ppStringArray ) { PSTR* ppTmp = ppStringArray; while (ppTmp && *ppTmp) { SMBFreeString(*ppTmp); ppTmp++; } LwIoFreeMemory(ppStringArray); }
static void LwIoThreadStateDestruct( void* pData ) { PIO_THREAD_STATE pState = (PIO_THREAD_STATE) pData; if (pState) { if (pState->pCreds) { LwIoDeleteCreds(pState->pCreds); } LwIoFreeMemory(pState); } }
static VOID RdrTree2Free( PRDR_TREE2 pTree ) { assert(!pTree->refCount); pthread_mutex_destroy(&pTree->mutex); RdrTree2DestroyContents(pTree); if (pTree->pSession) { RdrSession2Release(pTree->pSession); } LwIoFreeMemory(pTree); }
static VOID SMBPacketReleasePooled( IN PLWIO_PACKET_ALLOCATOR pPacketAllocator, IN OUT PSMB_PACKET pPacket ) { if (InterlockedDecrement(&pPacket->refCount) == 0) { BOOLEAN bInLock = FALSE; if (pPacket->pRawBuffer) { SMBPacketBufferFree( pPacketAllocator, pPacket->pRawBuffer, pPacket->bufferLen); pPacket->pRawBuffer = NULL; pPacket->bufferLen = 0; } LWIO_LOCK_MUTEX(bInLock, &pPacketAllocator->mutex); /* If the len is greater than our current allocator len, adjust */ /* @todo: make free list configurable */ if (pPacketAllocator->freePacketCount < pPacketAllocator->ulNumMaxPackets) { assert(sizeof(SMB_PACKET) > sizeof(SMB_STACK)); SMBStackPushNoAlloc(&pPacketAllocator->pFreePacketStack, (PSMB_STACK) pPacket); pPacketAllocator->freePacketCount++; } else { LWIO_UNLOCK_MUTEX(bInLock, &pPacketAllocator->mutex); LwIoFreeMemory(pPacket); } LWIO_UNLOCK_MUTEX(bInLock, &pPacketAllocator->mutex); } }
void RdrReleaseFile2( PRDR_CCB2 pFile ) { if (pFile->pTree) { RdrTree2Release(pFile->pTree); } if (pFile->bMutexInitialized) { pthread_mutex_destroy(&pFile->mutex); } RTL_FREE(&pFile->pwszPath); RTL_FREE(&pFile->pwszCanonicalPath); LwIoFreeMemory(pFile); }
VOID SMBFreeStringArray( PSTR * ppStringArray, DWORD dwCount ) { DWORD i; if ( ppStringArray ) { for(i = 0; i < dwCount; i++) { if (ppStringArray[i]) { SMBFreeString(ppStringArray[i]); } } LwIoFreeMemory(ppStringArray); } return; }
VOID SMBPacketFreeAllocator( IN OUT PLWIO_PACKET_ALLOCATOR pPacketAllocator ) { if (pPacketAllocator->pMutex) { pthread_mutex_destroy(&pPacketAllocator->mutex); pPacketAllocator->pMutex = NULL; } if (pPacketAllocator->pFreeBufferStack) { SMBStackFree(pPacketAllocator->pFreeBufferStack); } if (pPacketAllocator->pFreePacketStack) { SMBStackFree(pPacketAllocator->pFreePacketStack); } LwIoFreeMemory(pPacketAllocator); }
VOID SMBPacketRelease( IN PLWIO_PACKET_ALLOCATOR pPacketAllocator, IN OUT PSMB_PACKET pPacket ) { if (pPacketAllocator) { SMBPacketReleasePooled(pPacketAllocator, pPacket); } else if (InterlockedDecrement(&pPacket->refCount) == 0) { if (pPacket->pRawBuffer) { SMBPacketBufferFree( pPacketAllocator, pPacket->pRawBuffer, pPacket->bufferLen); } LwIoFreeMemory(pPacket); } }