aboutsummaryrefslogtreecommitdiffstats
path: root/t/helper/test-hash.c
diff options
context:
space:
mode:
authorTaylor Blau <me@ttaylorr.com>2025-01-23 12:34:19 -0500
committerJunio C Hamano <gitster@pobox.com>2025-01-23 10:28:16 -0800
commitd9213e4716ec8d0ac543d32a52a39c79818cb8ca (patch)
tree8466d6053e07b2f194bc2747191e197eb3df06f4 /t/helper/test-hash.c
parentfbe8d3079d4a96aeb4e4529cc93cc0043b759a05 (diff)
downloadgit-d9213e4716ec8d0ac543d32a52a39c79818cb8ca.tar.gz
t/helper/test-tool: implement sha1-unsafe helper
With the new "unsafe" SHA-1 build knob, it is convenient to have a test-tool that can exercise Git's unsafe SHA-1 wrappers for testing, similar to 't/helper/test-tool sha1'. Implement that helper by altering the implementation of that test-tool (in cmd_hash_impl(), which is generic and parameterized over different hash functions) to conditionally run the unsafe variants of the chosen hash function, and expose the new behavior via a new 'sha1-unsafe' test helper. Signed-off-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/helper/test-hash.c')
-rw-r--r--t/helper/test-hash.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/t/helper/test-hash.c b/t/helper/test-hash.c
index 45d829c908..d0ee668df9 100644
--- a/t/helper/test-hash.c
+++ b/t/helper/test-hash.c
@@ -1,7 +1,7 @@
#include "test-tool.h"
#include "hex.h"
-int cmd_hash_impl(int ac, const char **av, int algo)
+int cmd_hash_impl(int ac, const char **av, int algo, int unsafe)
{
git_hash_ctx ctx;
unsigned char hash[GIT_MAX_HEXSZ];
@@ -27,7 +27,10 @@ int cmd_hash_impl(int ac, const char **av, int algo)
die("OOPS");
}
- algop->init_fn(&ctx);
+ if (unsafe)
+ algop->unsafe_init_fn(&ctx);
+ else
+ algop->init_fn(&ctx);
while (1) {
ssize_t sz, this_sz;
@@ -46,9 +49,15 @@ int cmd_hash_impl(int ac, const char **av, int algo)
}
if (this_sz == 0)
break;
- algop->update_fn(&ctx, buffer, this_sz);
+ if (unsafe)
+ algop->unsafe_update_fn(&ctx, buffer, this_sz);
+ else
+ algop->update_fn(&ctx, buffer, this_sz);
}
- algop->final_fn(hash, &ctx);
+ if (unsafe)
+ algop->unsafe_final_fn(hash, &ctx);
+ else
+ algop->final_fn(hash, &ctx);
if (binary)
fwrite(hash, 1, algop->rawsz, stdout);