From c77b3e9f470f62d1a86647dc3fdf748462f4fd44 Mon Sep 17 00:00:00 2001 From: Dave Hibberd Date: Fri, 29 Nov 2024 01:35:56 +0000 Subject: [PATCH] More updates, large makefile rewrite for dynamic linking and cleaner build, WIP. --- .gitignore | 1 + debian/changelog | 10 +-- debian/patches/ftbfs-gcc14.patch | 142 ++++++++++++++++++++++++++++++- debian/patches/makefile | 59 +++++++++++-- debian/patches/series | 1 - debian/rules | 2 +- 6 files changed, 200 insertions(+), 15 deletions(-) diff --git a/.gitignore b/.gitignore index 224e7f0..b6cfaba 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ .pc/ +*.swp diff --git a/debian/changelog b/debian/changelog index 9e4b81b..6aaf07b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,6 @@ linbpq (6.0.24.51-1~hibbian+1) UNRELEASED; urgency=medium - * New upstream import + * New upstream import - Patches refreshed -- Dave Hibberd Thu, 28 Nov 2024 22:34:23 +0000 @@ -14,7 +14,7 @@ linbpq (6.0.24.50-1~hibbian+1) bookworm-hibbian-unstable; urgency=medium linbpq (6.0.24.49-1~hibbian+1) bookworm-hibbian-unstable; urgency=medium - * New Upstream import + * New Upstream import * Patches refreshed * Add mqtt requirements @@ -29,7 +29,7 @@ linbpq (6.0.24.45-1~hibbian+1) bookworm-hibbian-unstable; urgency=medium linbpq (6.0.24.42-1~hibbian+3) bookworm-hibbian-unstable; urgency=medium - * 32bit build error + * 32bit build error - Patch updated to fix hopefully -- Dave Hibberd Fri, 30 Aug 2024 12:21:57 +0100 @@ -43,7 +43,7 @@ linbpq (6.0.24.42-1~hibbian+2) bookworm-hibbian-unstable; urgency=medium linbpq (6.0.24.42-1~hibbian+1) bookworm-hibbian-unstable; urgency=medium * Install config to /etc - * New upstream update + * New upstream update * Patches refreshed * Debian hardening enabled - 2 new patches created that touch almost every file @@ -56,7 +56,7 @@ linbpq (6.0.24.40-1) unstable; urgency=medium * Fresh upstream release - Patches refreshed - * Secure by default patch + * Secure by default patch -- Dave Hibberd Sun, 07 Jul 2024 16:09:28 +0100 diff --git a/debian/patches/ftbfs-gcc14.patch b/debian/patches/ftbfs-gcc14.patch index e7dbe5d..6c76b21 100644 --- a/debian/patches/ftbfs-gcc14.patch +++ b/debian/patches/ftbfs-gcc14.patch @@ -9,6 +9,24 @@ memcpy(&rlen, &Decoded[5], 4); +@@ -1612,7 +1612,7 @@ + if (Sess ==NULL) + return 0; + +- Len = sprintf(Reply, StatusPage); ++ Len = sprintf(Reply, "%s", StatusPage); + + while (Sess) + { +@@ -1670,7 +1670,7 @@ + Sess = Sess->Next; + } + +- Len += sprintf(&Reply[Len], StatusTail); ++ Len += sprintf(&Reply[Len], "%s", StatusTail); + + return Len; + } --- a/bpqmail.h +++ b/bpqmail.h @@ -611,7 +611,7 @@ @@ -16,10 +34,23 @@ int number; int length; - int xdatereceived; -+ const time_t xdatereceived; ++ time_t xdatereceived; char bbsfrom[7]; // ? BBS we got it from ? char via[41]; char from[7]; +@@ -643,9 +643,9 @@ + // For 64 bit time_t compatibility define as long long + // (so struct is same with 32 or 64 bit time_t) + +- long long datereceived; +- long long datecreated; +- long long datechanged; ++ time_t datereceived; ++ time_t datecreated; ++ time_t datechanged; + + char Spare[61 - 24]; // For future use + } ; @@ -695,8 +695,8 @@ unsigned char Type; unsigned char changed; @@ -42,3 +73,112 @@ int AGWDataSocket_Disconnect( struct AGWSocketConnectionInfo * sockptr); int SendRawPacket(struct AGWSocketConnectionInfo * sockptr, char *txmsg, int Length); int ShowApps(); +--- a/APRSCode.c ++++ b/APRSCode.c +@@ -7666,7 +7666,7 @@ + + } + +- OutputLen += sprintf(&OutBuffer[OutputLen], WebTrailer); ++ OutputLen += sprintf(&OutBuffer[OutputLen], "%s", WebTrailer); + + HeaderLen = sprintf(Header, "HTTP/1.0 200 OK\r\nContent-Length: %d\r\nContent-Type: text/html\r\n\r\n", OutputLen); + sendandcheck(sock, Header, HeaderLen); +@@ -7711,7 +7711,7 @@ + + } + +- OutputLen += sprintf(&OutBuffer[OutputLen], WebTrailer); ++ OutputLen += sprintf(&OutBuffer[OutputLen], "%s", WebTrailer); + + HeaderLen = sprintf(Header, "HTTP/1.0 200 OK\r\nContent-Length: %d\r\nContent-Type: text/html\r\n\r\n", OutputLen); + sendandcheck(sock, Header, HeaderLen); +--- a/LinBPQ.c ++++ b/LinBPQ.c +@@ -667,7 +667,7 @@ + + // Replace CR with CRLF + +- printf(ptr); ++ printf("%c", ptr); + + if (ptr2) + printf("\r\n"); +@@ -816,7 +816,7 @@ + { + case 'h': + +- printf(HelpScreen); ++ printf("%c", HelpScreen); + exit (0); + + case 'l': +--- a/RigControl.c ++++ b/RigControl.c +@@ -1291,7 +1291,7 @@ + + // use text command + +- Len = sprintf(CmdPtr, ptr1); ++ Len = sprintf(CmdPtr,"%c", ptr1); + break; + + case YAESU: +--- a/FreeDATA.c ++++ b/FreeDATA.c +@@ -867,7 +867,7 @@ + char Message[256]; + int Len, ret; + +- Len = sprintf(Message, TXF); ++ Len = sprintf(Message,"%c",TXF); + ret = send(TNC->TCPDataSock, (char *)&Message, Len, 0); + + if (buffptr) +@@ -2476,7 +2476,7 @@ + char Message[256]; + int Len, ret; + +- Len = sprintf(Message, CQ); ++ Len = sprintf(Message, "%c", CQ); + ret = send(TNC->TCPDataSock, (char *)&Message, Len, 0); + } + +@@ -2491,7 +2491,7 @@ + if (Interval > 0) + Len = sprintf(Message, Template1, Interval); + else +- Len = sprintf(Message, Template2); ++ Len = sprintf(Message, "%c", Template2); + + ret = send(TNC->TCPDataSock, (char *)&Message, Len, 0); + } +@@ -3682,7 +3682,7 @@ + + // return FreeDataSendCommand(TNC, "D"); + +- Len = sprintf(Msg, Disconnect); ++ Len = sprintf(Msg,"%c", Disconnect); + + return send(TNC->TCPDataSock, Msg, Len, 0); + } +@@ -3694,7 +3694,7 @@ + char Msg[128]; + int Len; + +- Len = sprintf(Msg, GetData); ++ Len = sprintf(Msg, "%c", GetData); + + return send(TNC->TCPDataSock, Msg, Len, 0); + } +--- a/rigcontrol.h ++++ b/rigcontrol.h +@@ -2,7 +2,7 @@ + #define RIGCONTROL + + #ifndef LINBPQ +-#include "Rigresource.h" ++#include "rigresource.h" + #endif + + #define IDI_ICON2 2 diff --git a/debian/patches/makefile b/debian/patches/makefile index 00c189c..7e49309 100644 --- a/debian/patches/makefile +++ b/debian/patches/makefile @@ -1,21 +1,66 @@ --- a/makefile +++ b/makefile -@@ -33,11 +33,14 @@ +@@ -2,7 +2,7 @@ - linbpq: $(OBJS) - gcc $(OBJS) -Xlinker -Map=output.map -l:libminiupnpc.a -lrt -lm -lz $(LDFLAGS) -lpthread -lconfig -lpcap -o linbpq + # To exclude i2c support run make noi2c + +-OBJS = pngwtran.o pngrtran.o pngset.o pngrio.o pngwio.o pngtrans.o pngrutil.o pngwutil.o\ ++COMPLETE_SRC = pngwtran.o pngrtran.o pngset.o pngrio.o pngwio.o pngtrans.o pngrutil.o pngwutil.o\ + pngread.o pngwrite.o png.o pngerror.o pngget.o pngmem.o APRSIconData.o AISCommon.o\ + upnp.o APRSStdPages.o HSMODEM.o WinRPR.o KISSHF.o TNCEmulators.o bpqhdlc.o SerialPort.o\ + adif.o WebMail.o utf8Routines.o VARA.o LzFind.o Alloc.o LzmaDec.o LzmaEnc.o LzmaLib.o \ +@@ -18,26 +18,41 @@ + # Configuration: + + CC = gcc +- +-all: CFLAGS = -DLINBPQ -MMD -g -fcommon +-all: LDFLAGS = -l:libpaho-mqtt3a.a -l:libjansson.a +-all: linbpq ++LD = $(CC) ++CFLAGS:=$(shell dpkg-buildflags --get CFLAGS) ++CFLAGS+=$(shell dpkg-buildflags --get CPPFLAGS) ++CFLAGS+=-DLINBPQ ++LDFLAGS:=$(shell dpkg-buildflags --get LDFLAGS) ++ ++$(warning CFLAGS are $(CFLAGS)) ++ ++LIBS = -lrt -lm -lz -lpthread -lconfig -lpcap -lpaho-mqtt3a -ljansson -lminiupnpc + + +-nomqtt: CFLAGS = -DLINBPQ -MMD -fcommon -g -DNOMQTT ++ ++all: linbpq ++ ++nomqtt: CFLAGS += -DNOMQTT + nomqtt: linbpq + +-noi2c: CFLAGS = -DLINBPQ -MMD -DNOI2C -g -fcommon ++noi2c: CFLAGS += -DNOI2C + noi2c: linbpq + ++COMPLETE_OBJS = $(COMPLETE_SRC:.c=o) + +-linbpq: $(OBJS) +- gcc $(OBJS) -Xlinker -Map=output.map -l:libminiupnpc.a -lrt -lm -lz $(LDFLAGS) -lpthread -lconfig -lpcap -o linbpq - sudo setcap "CAP_NET_ADMIN=ep CAP_NET_RAW=ep CAP_NET_BIND_SERVICE=ep" linbpq -+ # sudo setcap "CAP_NET_ADMIN=ep CAP_NET_RAW=ep CAP_NET_BIND_SERVICE=ep" linbpq ++.c.o: ++ $(CC) $(CFLAGS) $(LDFLAGS) -c $< - -include *.d +--include *.d -clean : - rm *.d - rm linbpq $(OBJS) ++linbpq: $(COMPLETE_OBJS) ++ $(LD) $(LDFLAGS) -o linbpq $(COMPLETE_OBJS) $(LIBS) ++ ++-include *.d + +install: + install -b -m 755 -D -d debian/linbpq/usr/sbin -+ install -b -m 755 -s -p linbpq debian/linbpq/usr/sbin - ++ install -b -m 755 -p linbpq debian/linbpq/usr/sbin ++ +clean: + $(RM) *.d + $(RM) linbpq $(OBJS) diff --git a/debian/patches/series b/debian/patches/series index 8e599fc..90fc185 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -2,4 +2,3 @@ headers.patch ftbfs-gcc14.patch spelling-errors.patch makefile -secure-by-default.patch diff --git a/debian/rules b/debian/rules index b8b1ea0..9df5872 100755 --- a/debian/rules +++ b/debian/rules @@ -1,6 +1,6 @@ #!/usr/bin/make -f -export DEB_BUILD_MAINT_OPTIONS=hardening=+all +export DEB_BUILD_MAINT_OPTIONS=hardening=+all,-format qa=-bug-implicit-func %: dh $@