]> git.ipfire.org Git - thirdparty/git.git/commitdiff
cache: clear whole hash buffer with oidclr
authorPatryk Obara <patryk.obara@gmail.com>
Sun, 28 Jan 2018 00:13:14 +0000 (01:13 +0100)
committerJunio C Hamano <gitster@pobox.com>
Tue, 30 Jan 2018 18:42:36 +0000 (10:42 -0800)
As long as GIT_SHA1_RAWSZ is equal to GIT_MAX_RAWSZ there's no problem,
but when new hashing algorithm will be in place this memset will clear
only 20-byte prefix of hash buffer.

Alternatively, hashclr implementation could be adjusted, but this
function is almost removed from codebase already.  Separate
implementation of oidclr prevents potential buffer overrun in case
someone incorrectly used hashclr on object_id in future.

Signed-off-by: Patryk Obara <patryk.obara@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
cache.h

diff --git a/cache.h b/cache.h
index 08f2b81e1b4a2c1093932dd7224a20c2b12a2860..d5d78d6a51523df3040bab20e4ebae96156ad6fe 100644 (file)
--- a/cache.h
+++ b/cache.h
@@ -1029,7 +1029,7 @@ static inline void hashclr(unsigned char *hash)
 
 static inline void oidclr(struct object_id *oid)
 {
-       hashclr(oid->hash);
+       memset(oid->hash, 0, GIT_MAX_RAWSZ);
 }