Ejemplo n.º 1
0
//==============================================================
static void l_checkEvenFile(void)
//--------------------------------------------------------------
// 同じ名前のファイルを除外する
//--------------------------------------------------------------
// in:	なし
//--------------------------------------------------------------
// out:	なし
//==============================================================
{
	sList *ptr;
	IHASH *hash;

	// ハッシュテーブルを作成(若干大きめなサイズで作成して衝突を避ける)
	//------------------------------------------------------------------
	hash = OpenHash((pack.file_num + 255) & ~255);
	ptr = pack.top;
	ptr = ptr->next;							// 最初は出力先なのでスキップ
	while(ptr)
	{
		if(!InstallString(hash, ptr->file))
		{
			ptr->pack = FALSE;
			pack.pack_num--;
		}
		ptr = ptr->next;
	}
	CloseHash(hash);
}
Ejemplo n.º 2
0
void
tls_handshake_destroy(tls_handshake_t filter)
{
    tls_metric_destroyed(filter);

    /* Free the last handshake message flight */
    SSLResetFlight(filter);

    CloseHash(&SSLHashSHA1, &filter->shaState);
    CloseHash(&SSLHashMD5,  &filter->md5State);
    CloseHash(&SSLHashSHA256,  &filter->sha256State);
    CloseHash(&SSLHashSHA384,  &filter->sha384State);
    CloseHash(&SSLHashSHA512,  &filter->sha512State);

    sslFreePubKey(&filter->peerPubKey);
    sslFreePubKey(&filter->rsaEncryptPubKey);

    SSLFreeBuffer(&filter->fragmentedMessageCache);
    SSLFreeBuffer(&filter->peerID);
    SSLFreeBuffer(&filter->proposedSessionID);
    SSLFreeBuffer(&filter->sessionID);
    SSLFreeBuffer(&filter->sessionTicket);
    SSLFreeBuffer(&filter->externalSessionTicket);
    SSLFreeBuffer(&filter->preMasterSecret);
    SSLFreeBuffer(&filter->dhPeerPublic);
	SSLFreeBuffer(&filter->ecdhPeerPublic);
    SSLFreeBuffer(&filter->npnOwnData);
    SSLFreeBuffer(&filter->npnPeerData);
    SSLFreeBuffer(&filter->alpnOwnData);
    SSLFreeBuffer(&filter->alpnPeerData);
    SSLFreeBuffer(&filter->ownVerifyData);
    SSLFreeBuffer(&filter->peerVerifyData);
    SSLFreeBuffer(&filter->pskIdentity);
    SSLFreeBuffer(&filter->pskSharedSecret);
    SSLFreeBuffer(&filter->peerDomainName);
    SSLFreeBuffer(&filter->ocsp_response);
    SSLFreeBuffer(&filter->ocsp_request_extensions);
    tls_free_buffer_list(filter->ocsp_responder_id_list);
    tls_free_buffer_list(filter->sct_list);

    sslFree(filter->userAgent);
    sslFree(filter->enabledCipherSuites);
    sslFree(filter->requestedCipherSuites);
    sslFree(filter->ecdhCurves);
    sslFree(filter->peerSigAlgs);
    sslFree(filter->localSigAlgs);
    sslFree(filter->clientAuthTypes);
    sslFree(filter->ecdhContext._full);
    sslFree(filter->dhParams.gp);
    sslFree(filter->dhContext._full);
    sslFree(filter->requested_ecdh_curves);

    if(filter->signingPrivKeyRef)
        tls_private_key_destroy(filter->signingPrivKeyRef);
    SSLFreeCertificates(filter->localCert);

    SSLFreeCertificates(filter->peerCert);
    if(!filter->isServer) {
        SSLFreeDNList(filter->acceptableDNList);
    }

    free(filter);
}
Ejemplo n.º 3
0
tBOOL Hash2File(DWHASH_TYPE *lpHash, tCHAR *szSrcFileName, tBOOL bFree)
{

	FILE *Fp;
	FILE *recFp;
	tCHAR szFile[MAX_PATH];
	tINT i;
	DWHASH_BLOCK_TYPE BlockItem;
	DWHASH_BLOCK_FILE_TYPE BlockFileItem;
	tINT nCount;
#if defined(_DEBUG)
	tINT nMaxCol = 0, nCountCol = 0;
#endif
	tCHAR szFileName[MAX_PATH], *p;

	strcpy(szFileName, szSrcFileName);
	p = strrchr(szFileName, '.');
	if (p) {
		*p = '\0';
	}
	
	sprintf(szFile, "%s.dic", szFileName);
	if ((Fp = fopen(szFile, "wb")) == NULL) {
                return FALSE;
        }
	sprintf(szFile, "%s.hdic", szFileName);
	if ((recFp = fopen(szFile, "wb")) == NULL) {
		fclose(Fp);
                return FALSE;
        }

        lpHash->nBucketCount = DwordCvt(lpHash->nBucketCount);
        lpHash->nCollision = DwordCvt(lpHash->nCollision);

        if (fwrite(lpHash, sizeof(DWHASH_TYPE), 1, Fp) != 1) {
                fclose(Fp);
		fclose(recFp);
                return FALSE;
        }
        lpHash->nBucketCount = DwordCvt(lpHash->nBucketCount);
        lpHash->nCollision = DwordCvt(lpHash->nCollision);

	for ( i = 0 ; i < lpHash->nBucketCount ; i ++ ) {
		memcpy(&BlockItem, lpHash->lpBuf + i*sizeof(DWHASH_BLOCK_TYPE), sizeof(DWHASH_BLOCK_TYPE));
		BlockFileItem.nInfo = BlockItem.nInfo;
		BlockFileItem.nPosNextRec = -1;
#if defined(_DEBUG)
		if (BlockItem.nInfo == 15300) {
			printf("%d\n", BlockItem.nInfo);
		}
#endif
		if (BlockItem.lpNextRec) {

#if defined(_DEBUG)
			// collision info
			nCountCol++;
			if (nMaxCol < BlockItem.lpNextRec->nUsed) {
				nMaxCol = BlockItem.lpNextRec->nUsed;
			}
#endif

			BlockFileItem.nPosNextRec = ftell(recFp);
			nCount = BlockItem.lpNextRec->nUsed;
			nCount = DwordCvt(nCount);
			if (fwrite(&nCount, sizeof(tINT), 1, recFp)!=1) {
				fclose(Fp);
				fclose(recFp);
				return FALSE;
			}
			nCount = DwordCvt(nCount);
#if defined(_DEBUG)
		if (BlockItem.nInfo == 15300) {
			printf("www.dreamwiz.com/ count = %d, pos=%d\n", nCount, BlockFileItem.nPosNextRec);
		}
#endif

			if (fwrite(BlockItem.lpNextRec->lpBuf, BlockItem.lpNextRec->nUsed * BlockItem.lpNextRec->nWidth, 1, recFp)!=1) {
				fclose(Fp);
				fclose(recFp);
				return FALSE;
			}
		}
		if (fwrite(&BlockFileItem, sizeof(DWHASH_BLOCK_FILE_TYPE), 1, Fp) != 1) {
			fclose(Fp);
			fclose(recFp);
			return FALSE;
		}
        }
        if (bFree) CloseHash(lpHash);
        fclose(Fp);
	fclose(recFp);
#if defined(_DEBUG)
	printf("ok ... write : %s.dic %s.hdic collision : %d, max collision size : %d\n", szFileName, szFileName, nCountCol, nMaxCol);
#endif
	return TRUE;
}