Skip to content

Commit 07a20f5

Browse files
peffgitster
authored andcommitted
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 <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent aeb582a commit 07a20f5

File tree

3 files changed

+5
-3
lines changed

3 files changed

+5
-3
lines changed

Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1183,6 +1183,7 @@ BASIC_CFLAGS += -fsanitize=$(SANITIZE) -fno-sanitize-recover=$(SANITIZE)
11831183
BASIC_CFLAGS += -fno-omit-frame-pointer
11841184
ifneq ($(filter undefined,$(SANITIZERS)),)
11851185
BASIC_CFLAGS += -DNO_UNALIGNED_LOADS
1186+
BASIC_CFLAGS += -DSHA1DC_FORCE_ALIGNED_ACCESS
11861187
endif
11871188
ifneq ($(filter leak,$(SANITIZERS)),)
11881189
BASIC_CFLAGS += -DSUPPRESS_ANNOTATED_LEAKS

sha1collisiondetection

sha1dc/sha1.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,10 +124,11 @@
124124
#endif
125125
/*ENDIANNESS SELECTION*/
126126

127+
#ifndef SHA1DC_FORCE_ALIGNED_ACCESS
127128
#if defined(SHA1DC_FORCE_UNALIGNED_ACCESS) || defined(SHA1DC_ON_INTEL_LIKE_PROCESSOR)
128129
#define SHA1DC_ALLOW_UNALIGNED_ACCESS
129-
#endif /*UNALIGNMENT DETECTION*/
130-
130+
#endif /*UNALIGNED ACCESS DETECTION*/
131+
#endif /*FORCE ALIGNED ACCESS*/
131132

132133
#define rotate_right(x,n) (((x)>>(n))|((x)<<(32-(n))))
133134
#define rotate_left(x,n) (((x)<<(n))|((x)>>(32-(n))))

0 commit comments

Comments
 (0)