From 07a20f569b4b1690e717eaac0954007a8edfbfc2 Mon Sep 17 00:00:00 2001 From: Jeff King Date: Tue, 12 Mar 2019 17:06:26 -0400 Subject: [PATCH] Makefile: fix unaligned loads in sha1dc with UBSan The sha1dc library uses unaligned loads on platforms that support them. This is normally what you'd want for performance, but it does cause UBSan to complain when we compile with SANITIZE=undefined. Just like we set -DNO_UNALIGNED_LOADS for our own code in that case, we should set -DSHA1DC_FORCE_ALIGNED_ACCESS. Of course that does nothing without pulling in the patches from sha1dc to respect that define. So let's do that, too, updating both the submodule link and our in-tree copy (from the same commit). Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- Makefile | 1 + sha1collisiondetection | 2 +- sha1dc/sha1.c | 5 +++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index c5240942f2..abbbdf0a68 100644 --- a/Makefile +++ b/Makefile @@ -1183,6 +1183,7 @@ BASIC_CFLAGS += -fsanitize=$(SANITIZE) -fno-sanitize-recover=$(SANITIZE) BASIC_CFLAGS += -fno-omit-frame-pointer ifneq ($(filter undefined,$(SANITIZERS)),) BASIC_CFLAGS += -DNO_UNALIGNED_LOADS +BASIC_CFLAGS += -DSHA1DC_FORCE_ALIGNED_ACCESS endif ifneq ($(filter leak,$(SANITIZERS)),) BASIC_CFLAGS += -DSUPPRESS_ANNOTATED_LEAKS diff --git a/sha1collisiondetection b/sha1collisiondetection index 232357eb2e..16033998da 160000 --- a/sha1collisiondetection +++ b/sha1collisiondetection @@ -1 +1 @@ -Subproject commit 232357eb2ea0397388254a4b188333a227bf5b10 +Subproject commit 16033998da4b273aebd92c84b1e1b12e4aaf7009 diff --git a/sha1dc/sha1.c b/sha1dc/sha1.c index df0630bc6d..5931cf25d5 100644 --- a/sha1dc/sha1.c +++ b/sha1dc/sha1.c @@ -124,10 +124,11 @@ #endif /*ENDIANNESS SELECTION*/ +#ifndef SHA1DC_FORCE_ALIGNED_ACCESS #if defined(SHA1DC_FORCE_UNALIGNED_ACCESS) || defined(SHA1DC_ON_INTEL_LIKE_PROCESSOR) #define SHA1DC_ALLOW_UNALIGNED_ACCESS -#endif /*UNALIGNMENT DETECTION*/ - +#endif /*UNALIGNED ACCESS DETECTION*/ +#endif /*FORCE ALIGNED ACCESS*/ #define rotate_right(x,n) (((x)>>(n))|((x)<<(32-(n)))) #define rotate_left(x,n) (((x)<<(n))|((x)>>(32-(n)))) -- 2.43.2