From b7d4d7f2ad3c8f494bbef166918df1ffb46450b9 Mon Sep 17 00:00:00 2001 From: leitner Date: Wed, 14 May 2025 10:59:45 +0000 Subject: [PATCH] don't trip ubsan in uint32.h make pic adds to $CC instead of overwriting it --- GNUmakefile | 4 ++-- uint32.h | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/GNUmakefile b/GNUmakefile index 16bfe80..9296952 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -16,10 +16,10 @@ textcode.a cdb.a critbit.a all: ent $(LIBS) libowfat.a libsocket t pic pie: - $(MAKE) CC="gcc -fPIC" LDFLAGS="-fpie" + $(MAKE) CC="$(CC) -fPIC" LDFLAGS="-fpie" picx32 piex32: - $(MAKE) CC="gcc -mx32 -fPIC" LDFLAGS="-fpie" + $(MAKE) CC="$(CC) -mx32 -fPIC" LDFLAGS="-fpie" CROSS= #CROSS=i686-mingw- diff --git a/uint32.h b/uint32.h index 076d612..4c1aa17 100644 --- a/uint32.h +++ b/uint32.h @@ -27,12 +27,12 @@ static inline void uint32_pack(char out[4],uint32 in) { static inline void uint32_unpack(const char in[4],uint32* out) { const unsigned char* i = (const unsigned char*)in; - *out=i[0] | (i[1]<<8) | (i[2]<<16) | (i[3]<<24); + *out=i[0] | (i[1]<<8) | (i[2]<<16) | ((uint32)(i[3])<<24); } static inline uint32 uint32_read(const char in[4]) { const unsigned char* i = (const unsigned char*)in; - return i[0] | (i[1]<<8) | (i[2]<<16) | (i[3]<<24); + return i[0] | (i[1]<<8) | (i[2]<<16) | ((uint32)(i[3])<<24); } static inline void uint32_pack_big(char out[4],uint32 in) { @@ -44,12 +44,12 @@ static inline void uint32_pack_big(char out[4],uint32 in) { static inline void uint32_unpack_big(const char in[4],uint32* out) { const unsigned char* i = (const unsigned char*)in; - *out=(i[0]<<24) | (i[1]<<16) | (i[2]<<8) | i[3]; + *out=((uint32)(i[0])<<24) | (i[1]<<16) | (i[2]<<8) | i[3]; } static inline uint32 uint32_read_big(const char in[4]) { const unsigned char* i = (const unsigned char*)in; - return (i[0]<<24) | (i[1]<<16) | (i[2]<<8) | i[3]; + return ((uint32)(i[0])<<24) | (i[1]<<16) | (i[2]<<8) | i[3]; } #else