From af543f1ba784013fe7c67d1f1789942b240524f7 Mon Sep 17 00:00:00 2001 From: James Carter Date: Wed, 13 Mar 2024 16:16:34 -0400 Subject: [PATCH] libselinux, libsepol: Add CFLAGS and LDFLAGS to Makefile checks In libselinux there is an availability check for strlcpy() and in both libselinux and libsepol there are availability checks for reallocarray() in the src Makfiles. CFLAGS and LDFLAGS are needed for cross-compiling, but, unfortunately, the default CFLAGS cause all of these availability checks to fail to compile because of compilationerrors (rather than just the function not being available). Add CFLAGS and LDFLAGS to the availibility checks, update the checks so that a compilation error will only happen if the function being checked for is not available, and make checks for the same function the same in both libselinux and libsepol. Suggested-by: Jordan Williams Suggested-by: Winfried Dobbe Signed-off-by: James Carter --- libselinux/src/Makefile | 4 ++-- libsepol/src/Makefile | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/libselinux/src/Makefile b/libselinux/src/Makefile index d3b981fc..41cfbdca 100644 --- a/libselinux/src/Makefile +++ b/libselinux/src/Makefile @@ -104,13 +104,13 @@ override CFLAGS += -I../include -D_GNU_SOURCE $(DISABLE_FLAGS) $(PCRE_CFLAGS) # check for strlcpy(3) availability H := \# -ifeq (yes,$(shell printf '${H}include \nint main(void){char*d,*s;strlcpy(d, s, 0);return 0;}' | $(CC) -x c -o /dev/null - >/dev/null 2>&1 && echo yes)) +ifeq (yes,$(shell printf '${H}include \nint main(void){char d[2];const char *s="a";return (size_t)strlcpy(d,s,sizeof(d))>=sizeof(d);}' | $(CC) $(CFLAGS) $(LDFLAGS) -x c -o /dev/null - >/dev/null 2>&1 && echo yes)) override CFLAGS += -DHAVE_STRLCPY endif # check for reallocarray(3) availability H := \# -ifeq (yes,$(shell printf '${H}include \nint main(void){reallocarray(NULL, 0, 0);return 0;}' | $(CC) -x c -o /dev/null - >/dev/null 2>&1 && echo yes)) +ifeq (yes,$(shell printf '${H}include \nint main(void){return reallocarray(NULL,0,0)==NULL;}' | $(CC) $(CFLAGS) $(LDFLAGS) -x c -o /dev/null - >/dev/null 2>&1 && echo yes)) override CFLAGS += -DHAVE_REALLOCARRAY endif diff --git a/libsepol/src/Makefile b/libsepol/src/Makefile index 16b9bd5e..7b0e8446 100644 --- a/libsepol/src/Makefile +++ b/libsepol/src/Makefile @@ -31,7 +31,7 @@ endif # check for reallocarray(3) availability H := \# -ifeq (yes,$(shell printf '${H}define _GNU_SOURCE\n${H}include \nint main(void){void*p=reallocarray(NULL, 1, sizeof(char));return 0;}' | $(CC) $(LDFLAGS) -x c -o /dev/null - >/dev/null 2>&1 && echo yes)) +ifeq (yes,$(shell printf '${H}include \nint main(void){return reallocarray(NULL,0,0)==NULL;}' | $(CC) $(CFLAGS) $(LDFLAGS) -x c -o /dev/null - >/dev/null 2>&1 && echo yes)) override CFLAGS += -DHAVE_REALLOCARRAY endif