From 22ef2fbb0e016e323fb9976bb506d23730425eaf Mon Sep 17 00:00:00 2001 From: Miroslav Lichvar Date: Mon, 26 Jun 2023 13:20:22 +0200 Subject: [PATCH] makefile: compile getdate.o with -fwrapv option The getdate code (copied from gnulib before it was switched to GPLv3) has multiple issues with signed integer overflows. Use the -fwrapv compiler option for this object to at least make the operations defined. --- Makefile.in | 4 ++++ configure | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/Makefile.in b/Makefile.in index ef100a4..101e0c6 100644 --- a/Makefile.in +++ b/Makefile.in @@ -33,6 +33,8 @@ CFLAGS = @CFLAGS@ CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ +GETDATE_CFLAGS = @GETDATE_CFLAGS@ + EXTRA_OBJS = @EXTRA_OBJS@ OBJS = array.o cmdparse.o conf.o local.o logging.o main.o memory.o quantiles.o \ @@ -61,6 +63,8 @@ chronyd : $(OBJS) chronyc : $(CLI_OBJS) $(CC) $(CFLAGS) -o chronyc $(CLI_OBJS) $(LDFLAGS) $(LIBS) $(EXTRA_CLI_LIBS) +getdate.o: CFLAGS += $(GETDATE_CFLAGS) + distclean : clean $(MAKE) -C doc distclean $(MAKE) -C test/unit distclean diff --git a/configure b/configure index 15c1935..d4ab9b5 100755 --- a/configure +++ b/configure @@ -570,6 +570,13 @@ if [ "x$MYCFLAGS" = "x" ]; then fi fi +TESTCFLAGS="-fwrapv" +if test_code '-fwrapv' '' "$TESTCFLAGS" '' ''; then + GETDATE_CFLAGS="-fwrapv" +else + GETDATE_CFLAGS="" +fi + if [ "x$MYCC" = "xgcc" ] || [ "x$MYCC" = "xclang" ]; then MYCFLAGS="$MYCFLAGS -Wmissing-prototypes -Wall" fi @@ -1122,6 +1129,7 @@ do s%@CFLAGS@%${MYCFLAGS}%;\ s%@CPPFLAGS@%${MYCPPFLAGS}%;\ s%@LDFLAGS@%${MYLDFLAGS}%;\ + s%@GETDATE_CFLAGS@%${GETDATE_CFLAGS}%;\ s%@LIBS@%${LIBS}%;\ s%@EXTRA_LIBS@%${EXTRA_LIBS}%;\ s%@EXTRA_CLI_LIBS@%${EXTRA_CLI_LIBS}%;\