Beispiel #1
0
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);
    }
}
Beispiel #2
0
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);
    }
}
Beispiel #3
0
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);
}
Beispiel #4
0
VOID
SMBFreeString(
    PSTR pszString
    )
{
    LwIoFreeMemory(pszString);
}
Beispiel #5
0
VOID
SMBFreeNullTerminatedStringArray(
    PSTR * ppStringArray
    )
{
    PSTR* ppTmp = ppStringArray;

    while (ppTmp && *ppTmp) {

          SMBFreeString(*ppTmp);

          ppTmp++;
    }

    LwIoFreeMemory(ppStringArray);
}
Beispiel #6
0
static void
LwIoThreadStateDestruct(
    void* pData
    )
{
    PIO_THREAD_STATE pState = (PIO_THREAD_STATE) pData;

    if (pState)
    {
        if (pState->pCreds)
        {
            LwIoDeleteCreds(pState->pCreds);
        }

        LwIoFreeMemory(pState);
    }
}
Beispiel #7
0
static
VOID
RdrTree2Free(
    PRDR_TREE2 pTree
    )
{
    assert(!pTree->refCount);

    pthread_mutex_destroy(&pTree->mutex);

    RdrTree2DestroyContents(pTree);

    if (pTree->pSession)
    {
        RdrSession2Release(pTree->pSession);
    }

    LwIoFreeMemory(pTree);
}
Beispiel #8
0
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);
    }
}
Beispiel #9
0
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);
}
Beispiel #10
0
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;
}
Beispiel #11
0
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);
}
Beispiel #12
0
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);
    }
}