Changes in v3: - use st_mult() instead of unsigned_mult_overflows(), as suggested by Junio. - split migration of SHA-1 and SHA-256 in different patches, as suggested by Patrick. - Revert removal of 'sha256' subcommand of test-tool due to existing dependencies on it. - Fix some formatting CI for v3: https://github.com/spectre10/git/actions/runs/9216124753 Ghanshyam Thakkar (3): strbuf: introduce strbuf_addstrings() to repeatedly add a string t/: port helper/test-sha1.c to unit-tests/t-hash.c t/: port helper/test-sha256.c to unit-tests/t-hash.c Makefile | 1 + builtin/submodule--helper.c | 4 +- json-writer.c | 5 +-- strbuf.c | 9 +++++ strbuf.h | 5 +++ t/t0015-hash.sh | 56 -------------------------- t/unit-tests/t-hash.c | 79 +++++++++++++++++++++++++++++++++++++ 7 files changed, 96 insertions(+), 63 deletions(-) delete mode 100755 t/t0015-hash.sh create mode 100644 t/unit-tests/t-hash.c Range-diff against v2: 1: b8c4ab31c6 ! 1: cd831fabf5 strbuf: introduce strbuf_addstrings() to repeatedly add a string @@ ## Metadata ## -Author: Achu Luma <ach.lumap@xxxxxxxxx> +Author: Ghanshyam Thakkar <shyamthakkar001@xxxxxxxxx> ## Commit message ## strbuf: introduce strbuf_addstrings() to repeatedly add a string @@ Commit message strbuf_addstrings() would be similar for strings as strbuf_addch() and strbuf_addchars() for characters. + Helped-by: Junio C Hamano <gitster@xxxxxxxxx> Mentored-by: Christian Couder <chriscool@xxxxxxxxxxxxx> + Mentored-by: Kaartic Sivaraam <kaartic.sivaraam@xxxxxxxxx> + Co-authored-by: Achu Luma <ach.lumap@xxxxxxxxx> Signed-off-by: Achu Luma <ach.lumap@xxxxxxxxx> + Signed-off-by: Ghanshyam Thakkar <shyamthakkar001@xxxxxxxxx> ## builtin/submodule--helper.c ## @@ builtin/submodule--helper.c: static void module_list_active(struct module_list *list) @@ strbuf.c: void strbuf_add(struct strbuf *sb, const void *data, size_t len) +void strbuf_addstrings(struct strbuf *sb, const char *s, size_t n) +{ -+ size_t len = strlen(s); -+ if (unsigned_mult_overflows(len, n)) -+ die("you want to use way too much memory"); -+ strbuf_grow(sb, len * n); -+ for (size_t i = 0; i < n; i++) -+ strbuf_add(sb, s, len); ++ size_t len = strlen(s); ++ ++ strbuf_grow(sb, st_mult(len, n)); ++ for (size_t i = 0; i < n; i++) ++ strbuf_add(sb, s, len); +} + void strbuf_addbuf(struct strbuf *sb, const struct strbuf *sb2) 2: 20a7ff8e24 < -: ---------- Port helper/test-sha256.c and helper/test-sha1.c to unit-tests/t-hash.c -: ---------- > 2: 2c4471ce37 t/: port helper/test-sha1.c to unit-tests/t-hash.c -: ---------- > 3: 68dcf388d8 t/: port helper/test-sha256.c to unit-tests/t-hash.c -- 2.45.1