diff options
author | Victoria Dye <vdye@github.com> | 2022-08-12 22:10:10 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2022-08-12 22:20:02 +0200 |
commit | 91be401945a58c95a61c94bd5ab5ed25d143803d (patch) | |
tree | e5a6eeacee79c0e770bd06e2345960fd3ace4b4d /contrib | |
parent | scalar-diagnose: use "$GIT_UNZIP" in test (diff) | |
download | git-91be401945a58c95a61c94bd5ab5ed25d143803d.tar.xz git-91be401945a58c95a61c94bd5ab5ed25d143803d.zip |
scalar-diagnose: avoid 32-bit overflow of size_t
Avoid 32-bit size_t overflow when reporting the available disk space in
'get_disk_info' by casting the block size and available block count to
'off_t' before multiplying them. Without this change, 'st_mult' would
(correctly) report a size_t overflow on 32-bit systems at or exceeding 2^32
bytes of available space.
Note that 'off_t' is a 64-bit integer even on 32-bit systems due to the
inclusion of '#define _FILE_OFFSET_BITS 64' in 'git-compat-util.h' (see
b97e911643 (Support for large files on 32bit systems., 2007-02-17)).
Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Victoria Dye <vdye@github.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/scalar/scalar.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/contrib/scalar/scalar.c b/contrib/scalar/scalar.c index 97e71fe19c..0404645228 100644 --- a/contrib/scalar/scalar.c +++ b/contrib/scalar/scalar.c @@ -348,7 +348,7 @@ static int get_disk_info(struct strbuf *out) } strbuf_addf(out, "Available space on '%s': ", buf.buf); - strbuf_humanise_bytes(out, st_mult(stat.f_bsize, stat.f_bavail)); + strbuf_humanise_bytes(out, (off_t)stat.f_bsize * (off_t)stat.f_bavail); strbuf_addf(out, " (mount flags 0x%lx)\n", stat.f_flag); strbuf_release(&buf); #endif |