Освобождение памяти в OPEN SSL CTX - PullRequest
0 голосов
/ 14 февраля 2020

Я работаю с некоторым кодом C ++, который вычисляет HMA C 256 га sh, код не освобождает контекст. Оригинальный программист предположил, что HMAC_CTX_reset сделал это, но я сильно подозреваю, что HMAC_CTX_free также следует использовать для очистки контекста.

HMAC_CTX* hmac = HMAC_CTX_new();
HMAC_CTX_reset(hmac);
HMAC_Init_ex(hmac, (unsigned char*)key.data(), keyLen, EVP_sha256(), NULL);
HMAC_Update(hmac, (unsigned char*)value.data(), valueLen);
HMAC_Final(hmac, hash, &len);
HMAC_CTX_reset(hmac);
return std::vector<uint8_t>((uint8_t*)hash,(uint8_t*)hash+SHA256_DIGEST_LENGTH);

Я предлагаю, чтобы HMAC_CTX_free(hmac); следовало HMAC_CTX_reset.

HMAC_CTX* hmac = HMAC_CTX_new();
HMAC_CTX_reset(hmac);
HMAC_Init_ex(hmac, (unsigned char*)key.data(), keyLen, EVP_sha256(), NULL);
HMAC_Update(hmac, (unsigned char*)value.data(), valueLen);
HMAC_Final(hmac, hash, &len);
HMAC_CTX_reset(hmac);
HMAC_CTX_free(hmac);
return std::vector<uint8_t>((uint8_t*)hash,(uint8_t*)hash+SHA256_DIGEST_LENGTH);

Могу ли я получить второе мнение?

...