//============================================================== 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); }
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); }
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; }