hash: initialize context before cloning

Our C-based clone helper requires that the context be initialized, but
we neglect to do that in our Clone implementation for CryptoHasher.
This does not matter when using our default block SHA-256
implementation, but it does cause a crash when using OpenSSL as the
backend.  Fix this by properly initializing the context before cloning
into it.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
brian m. carlson
2026-07-19 01:08:41 +00:00
committed by Junio C Hamano
parent 48bbf81c29
commit 251e7af992

View File

@@ -181,7 +181,10 @@ impl CryptoDigest for CryptoHasher {
impl Clone for CryptoHasher {
fn clone(&self) -> Self {
let ctx = unsafe { c::git_hash_alloc() };
unsafe { c::git_hash_clone(ctx, self.ctx) };
unsafe {
c::git_hash_init(ctx, self.algo.hash_algo_ptr());
c::git_hash_clone(ctx, self.ctx)
};
Self {
algo: self.algo,
ctx,