pkgsrc-WIP-changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Initial add with my 32/64b patches



Module Name:	pkgsrc-wip
Committed By:	Chris Maness <christopher.maness%gmail.com@localhost>
Pushed By:	kq6up
Date:		Thu Jun 4 13:25:53 2026 +0000
Changeset:	65a692971f610361ccc3bc2bbd79ecca011b8532

Modified Files:
	tnt/distinfo
Added Files:
	tnt/MESSAGE
	tnt/patches/patch-aa
	tnt/patches/patch-ac
	tnt/patches/patch-ad
	tnt/patches/patch-ae
	tnt/patches/patch-af
	tnt/patches/patch-ag
	tnt/patches/patch-intl_Makefile.in

Log Message:
Initial add with my 32/64b patches

To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=65a692971f610361ccc3bc2bbd79ecca011b8532

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

diffstat:
 tnt/MESSAGE                        |  15 +++++
 tnt/distinfo                       |   7 +++
 tnt/patches/patch-aa               |  17 ++++++
 tnt/patches/patch-ac               |  13 +++++
 tnt/patches/patch-ad               |  12 ++++
 tnt/patches/patch-ae               |  25 ++++++++
 tnt/patches/patch-af               | 113 +++++++++++++++++++++++++++++++++++++
 tnt/patches/patch-ag               |  78 +++++++++++++++++++++++++
 tnt/patches/patch-intl_Makefile.in |  67 ++++++++++++++++++++++
 9 files changed, 347 insertions(+)

diffs:
diff --git a/tnt/MESSAGE b/tnt/MESSAGE
new file mode 100644
index 0000000000..e324fb4e8e
--- /dev/null
+++ b/tnt/MESSAGE
@@ -0,0 +1,15 @@
+===========================================================================
+$NetBSD: MESSAGE,v 1.3 2005/09/28 14:15:49 rillig Exp $
+
+The installation of tnt is now completed. Please read
+the documentation provided with this package carefully and
+edit all configuration files to reflect your system setup!
+
+IMPORTANT NOTE:
+===============
+
+Make a backup of all your configuration and log files as
+they will be overwritten or deleted during any future
+installation or de-installation of tnt!
+
+===========================================================================
diff --git a/tnt/distinfo b/tnt/distinfo
index 7e38fb5a5c..9640ec7c56 100644
--- a/tnt/distinfo
+++ b/tnt/distinfo
@@ -3,3 +3,10 @@ $NetBSD: distinfo,v 1.1.1.1 2010/09/02 11:59:04 jihbed Exp $
 RMD160 (tnt_3_0_12.zip) = 1253e436f156c4f0ad99b75d4129f43b39753e24
 SHA512 (tnt_3_0_12.zip) = 3be00d37880ffc191022db13993c3946e913e92409cef1ff5f53b74cab5ea09782d131056d89bcbd0990939967b5d93ebe93e8a7db956be2fb9e8a7356dafbfd
 Size (tnt_3_0_12.zip) = 50166 bytes
+SHA1 (patch-aa) = f2b6c9f22ffd4ef418f5aab6ca179d656e0a563c
+SHA1 (patch-ac) = 86865198639da69469c2766ec638898553eb7662
+SHA1 (patch-ad) = 1735028a7a52cc75f83a3f3c9fd29a06c9dd0153
+SHA1 (patch-ae) = 0f952e74159cd2eed714b7f3ab62bf54c9fbd177
+SHA1 (patch-af) = 3ccdbddcd5b67247d07cb790e980d91af59963dd
+SHA1 (patch-ag) = 0f608b1b474962c6b4d90faf41285f24ba4eb3e1
+SHA1 (patch-intl_Makefile.in) = 57e58f81217d382bcb71d227e9184ae827f9ddd7
diff --git a/tnt/patches/patch-aa b/tnt/patches/patch-aa
new file mode 100644
index 0000000000..1f6cfa5f52
--- /dev/null
+++ b/tnt/patches/patch-aa
@@ -0,0 +1,17 @@
+$NetBSD: patch-aa,v 1.2 2007/12/09 13:08:43 obache Exp $
+
+--- doc/tntdoc.info.orig	2000-01-06 01:16:49.000000000 +0000
++++ doc/tntdoc.info
+@@ -5,6 +5,12 @@ the input file tntdoc.texinfo.
+ 
+    Copyright (C) 1993-1997 by Mark Wahl, DL4YBG
+ 
++INFO-DIR-SECTION Packet Radio
++START-INFO-DIR-ENTRY
++* TNT: (tntdoc).	A UNIX Packet-Radio Terminal Program
++END-INFO-DIR-ENTRY
++
++
+ 
+ Indirect:
+ tntdoc.info-1: 215
diff --git a/tnt/patches/patch-ac b/tnt/patches/patch-ac
new file mode 100644
index 0000000000..8350eb1f8f
--- /dev/null
+++ b/tnt/patches/patch-ac
@@ -0,0 +1,13 @@
+$NetBSD: patch-ac,v 1.3 2007/12/09 13:08:43 obache Exp $
+
+--- configure.orig	2002-11-16 23:08:33.000000000 +0000
++++ configure
+@@ -4084,7 +4084,7 @@ tnt_bin_dir=${prefix}/libexec/tnt
+ tnt_sound_dir=${prefix}/tnt/sounds
+ 
+ case "$target" in
+-	*-*-netbsd*)
++	*-*-netbsd* | *-*-dragonfly*)
+ 		CFLAGS="$CFLAGS -DTNT_NETBSD"
+ 		cat >> confdefs.h <<\EOF
+ #define DIR_STRING "ls -la "
diff --git a/tnt/patches/patch-ad b/tnt/patches/patch-ad
new file mode 100644
index 0000000000..82a3f550fc
--- /dev/null
+++ b/tnt/patches/patch-ad
@@ -0,0 +1,12 @@
+$NetBSD: patch-ad,v 1.1 2007/12/09 13:08:44 obache Exp $
+
+--- src/window.c.orig	2000-01-06 01:16:51.000000000 +0000
++++ src/window.c
+@@ -90,6 +90,7 @@ int insertmode;
+ int charconv;
+ int xtermkeys;
+ 
++#define BC localBC /* BC is defined in /usr/include/termcap.h */
+ /* Terminal capabilities */
+ static char *AL, *DL, *IC, *DC, *WR;
+ static char *CL, *CM, *CS, *IS, *BC;
diff --git a/tnt/patches/patch-ae b/tnt/patches/patch-ae
new file mode 100644
index 0000000000..d10012deff
--- /dev/null
+++ b/tnt/patches/patch-ae
@@ -0,0 +1,25 @@
+$NetBSD: patch-ae,v 1.1 2009/02/16 19:20:16 joerg Exp $
+
+--- po/Makefile.in.in.orig	2009-02-16 20:17:28.000000000 +0100
++++ po/Makefile.in.in
+@@ -111,9 +111,9 @@ install-data: install-data-@USE_NLS@
+ install-data-no: all
+ install-data-yes: all
+ 	if test -r "$(MKINSTALLDIRS)"; then \
+-	  $(MKINSTALLDIRS) $(datadir); \
++	  $(MKINSTALLDIRS) ${DESTDIR}$(datadir); \
+ 	else \
+-	  $(SHELL) $(top_srcdir)/mkinstalldirs $(datadir); \
++	  $(SHELL) $(top_srcdir)/mkinstalldirs ${DESTDIR}$(datadir); \
+ 	fi
+ 	@catalogs='$(CATALOGS)'; \
+ 	for cat in $$catalogs; do \
+@@ -123,7 +123,7 @@ install-data-yes: all
+ 	    *)     destdir=$(localedir);; \
+ 	  esac; \
+ 	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
+-	  dir=$$destdir/$$lang/LC_MESSAGES; \
++	  dir=${DESTDIR}$$destdir/$$lang/LC_MESSAGES; \
+ 	  if test -r "$(MKINSTALLDIRS)"; then \
+ 	    $(MKINSTALLDIRS) $$dir; \
+ 	  else \
diff --git a/tnt/patches/patch-af b/tnt/patches/patch-af
new file mode 100644
index 0000000000..25da116b8c
--- /dev/null
+++ b/tnt/patches/patch-af
@@ -0,0 +1,113 @@
+$NetBSD$
+
+Fix buffer corruption and unsafe string handling in open_sendfile().
+
+There is no active upstream maintainer.  The original source is at
+http://www.baycom.org/~tom/ham/tnt/  The author's QRZ page suggests
+he may be reachable but no upstream bug tracker exists.
+
+* src/file.c: In open_sendfile(), the original code called
+  strcpy(file_str, file_str+1) to strip a leading slash from an
+  absolute filename.  Because source and destination overlap, this
+  is undefined behaviour and corrupted the input buffer, causing
+  crashes when subsequent commands (such as //HELP) attempted to
+  parse it.
+
+  Fix by introducing a const pointer adjusted_file_str that skips
+  the leading slash without modifying the original buffer.
+
+  Additionally replace unbounded strcpy/strcat used to build
+  tx_file[channel].name with snprintf, and replace
+  strcpy/strcat used for the HOME path with snprintf, to prevent
+  buffer overflows if path components are unusually long.
+
+  Replace sprintf with snprintf in the ABIN protocol header
+  construction to prevent overflow into ans_str[80].
+
+  Fix sign-compare warnings where int loop variables were compared
+  against strlen() return values (size_t).
+
+  Add missing #include <time.h> for the time() call in open_logfile().
+
+
+--- src/file.c.orig
++++ src/file.c
+@@ -13,6 +13,7 @@
+ #ifndef DPBOXT
+ #include "xmon.h"
+ #endif
++#include <time.h>
+ 
+ #ifdef TNT_SOLARIS 
+ /* this is maybe well for all others too ?? - oe1smc */ 
+@@ -1529,6 +1530,11 @@
+ 
+   path_num=0;
+ 
++  /* adjusted_file_str skips the leading '/' for absolute paths without
++   * modifying file_str in place; the original strcpy(file_str, file_str+1)
++   * caused overlapping-buffer corruption that crashed subsequent commands. */
++  const char *adjusted_file_str = (file_str[0] == '/') ? file_str + 1 : file_str;
++
+   /* Received a remote-request (//SEND, //SENDABIN, etc.) */
+   if ((mode == M_REMOTE) && (par2 == 0)) {
+     if (strchr(file_str,'/') != NULL) {
+@@ -1543,22 +1549,22 @@
+     if(file_str[0] == '/') {
+       strcpy(path_str[path_num], "/");
+       path_num++;
+-      strcpy(file_str, file_str+1);
+     }
+     else {
+       strcpy(path_str[path_num],upload_dir);
+       path_num++;
+       strcpy(path_str[path_num],download_dir);
+       path_num++;
+-      strcpy(path_str[path_num],getenv("HOME"));
+-      strcat(path_str[path_num], "/");
++      snprintf(path_str[path_num], sizeof(path_str[path_num]), "%s/", getenv("HOME"));
+       path_num++;
+     }
+   }
+ 
+   for(i=0;i<path_num;i++) { /* DH3MB: Search in several paths for the file */
+-    strcpy(tx_file[channel].name, path_str[i]);
+-    strcat(tx_file[channel].name, file_str);
++    /* Construct path safely; if path+filename exceeds the 160-byte name
++     * buffer, snprintf truncates -- acceptable for very long paths. */
++    snprintf(tx_file[channel].name, sizeof(tx_file[channel].name),
++             "%s%s", path_str[i], adjusted_file_str);
+ 
+     drop_priv(mode,channel,&uid,&gid);
+     tx_file[channel].fd = open(tx_file[channel].name,O_RDONLY); 
+@@ -1567,7 +1573,7 @@
+     if (tx_file[channel].fd == -1) {
+       /* file does not exist: change all chars to lower case and try again */
+       if (errno != EACCES) {
+-        for (j = strlen(path_str[i]); j < strlen(tx_file[channel].name); j++) {
++        for (j = (int)strlen(path_str[i]); j < (int)strlen(tx_file[channel].name); j++) {
+           ch = *(tx_file[channel].name+j);
+           if ((ch > 0x40) && (ch < 0x5b)) {
+             ch |= 0x20;
+@@ -1625,7 +1631,7 @@
+   case TX_ABINQ:
+     if (res == 2) {
+       if (strcmp(tmpstr,"`") != 0) {
+-        sprintf(ans_str,"//WPRG %s\015",tmpstr);
++        snprintf(ans_str, sizeof(ans_str), "//WPRG %.71s\015", tmpstr);
+         rem_data_display(channel,ans_str);
+         queue_cmd_data(channel,X_DATA,strlen(ans_str),flag1,ans_str);
+       }
+@@ -1654,10 +1660,10 @@
+       slashptr = tx_file[channel].name;
+     else
+       slashptr++;
+-    for (i=0;i<strlen(slashptr);i++)
++    for (i=0;i<(int)strlen(slashptr);i++)
+       filename[i] = toupper(slashptr[i]);
+     filename[strlen(slashptr)] = '\0';
+-    sprintf(ans_str,"#BIN#%d#|%d#$1EDEADF0#%s\015",file_len,crc,filename);
++    snprintf(ans_str, sizeof(ans_str), "#BIN#%d#|%d#$1EDEADF0#%.40s\015", file_len, crc, filename);
+     rem_data_display(channel,ans_str);
+     queue_cmd_data(channel,X_DATA,strlen(ans_str),flag1,ans_str);
+     break;
diff --git a/tnt/patches/patch-ag b/tnt/patches/patch-ag
new file mode 100644
index 0000000000..988cbeb474
--- /dev/null
+++ b/tnt/patches/patch-ag
@@ -0,0 +1,78 @@
+$NetBSD$
+
+Fix session hang on 64-bit systems due to IFACE_CMDBUF struct misalignment.
+
+There is no active upstream maintainer and no upstream bug tracker.
+The original source is available via pkgsrc ham/dpbox and ham/tnt.
+
+* src/ifacedef.h (tnt), source/ifacedef.h (dpbox): The IFACE_CMDBUF
+  union contained a 'long file_id' member for CMD_BCCALLBACK.  On
+  64-bit LP64 systems sizeof(long) is 8, which forces the union to
+  require 8-byte alignment.  The compiler inserts 4 bytes of padding
+  between the 'int command' field and the union, shifting 'data' from
+  offset 4 (32-bit) to offset 8 (64-bit).
+
+  The protocol uses length-prefixed writes that assume 'data' is at
+  offset 4.  On 64-bit systems every command with a payload is
+  transmitted incorrectly: the write covers only the command field and
+  the padding, never reaching the actual payload.  The receiver reads
+  'data' from offset 8 and gets uninitialised memory.  Affected
+  commands include CMD_CSTATUS (frame count), CMD_CONNECT, CMD_ACT_RESP,
+  and all other commands with data payloads.  The result is a session
+  hang whenever dpbox sends enough data to exhaust the frame window,
+  because the CMD_CSTATUS response from TNT is never correctly received
+  by dpbox to reset the window.
+
+  The BCAST_HEADINFO struct also contained 'long file_id', causing its
+  size to differ between 32-bit and 64-bit, corrupting the temp file
+  used to pass broadcast header information between dpbox and TNT.
+
+  Fix by replacing both 'long file_id' declarations with 'int32_t
+  file_id' and updating LEN_BCCALLBACK accordingly.  File IDs are
+  BBS message sequence numbers that never approach 32-bit range.
+  This restores IFACE_CMDBUF to 256 bytes with 'data' at offset 4
+  on both 32-bit and 64-bit systems, matching the wire protocol
+  assumptions throughout the codebase.  Add #include <stdint.h> for
+  the int32_t type.
+
+  This file is identical in both tnt and dpbox; the same patch must
+  be applied to both packages.
+
+--- src/ifacedef.h.orig	2026-05-23 13:36:15.111561277 +0000
++++ src/ifacedef.h	2026-05-23 13:36:15.121720675 +0000
+@@ -6,6 +6,8 @@
+    updated: Mark Wahl DL4YBG 96/09/23
+ */
+ 
++#include <stdint.h>
++
+ #define HEAD_LEN sizeof(IFACE_HEADER)
+ #define IFACE_PACLEN 256
+ #define MAX_LEN (HEAD_LEN + IFACE_PACLEN)
+@@ -31,7 +33,7 @@
+ #define LEN_BULLID (LEN_SIMPLE + sizeof(int) + BULLIDLEN + 1)
+ #define LEN_SETRWMODE (LEN_SIMPLE + sizeof(int))
+ #define LEN_BOXISBUSY (LEN_SIMPLE + sizeof(int))
+-#define LEN_BCCALLBACK (LEN_SIMPLE + sizeof(long))
++#define LEN_BCCALLBACK (LEN_SIMPLE + sizeof(int32_t))
+ #define LEN_SETUNPROTO (LEN_SIMPLE + 20)
+ #define LEN_CONNECT (LEN_SIMPLE + sizeof(int) + 20)
+ #define LEN_TNTRESPONSE (LEN_SIMPLE + sizeof(int))
+@@ -76,7 +78,7 @@
+     /* CMD_BOXISBUSY */
+     int boxisbusy;
+     /* CMD_BCCALLBACK */
+-    long file_id; 
++    int32_t file_id; 
+     /* CMD_SETUNPROTO */
+     struct {
+       char qrg[20];
+@@ -166,7 +168,7 @@
+   char tnc;
+   char port;
+   char qrg[20];
+-  long file_id;
++  int32_t file_id;
+   unsigned short file_type;
+   char filename[256];
+   char address[256];
diff --git a/tnt/patches/patch-intl_Makefile.in b/tnt/patches/patch-intl_Makefile.in
new file mode 100644
index 0000000000..40bc972e2c
--- /dev/null
+++ b/tnt/patches/patch-intl_Makefile.in
@@ -0,0 +1,67 @@
+$NetBSD: patch-intl_Makefile.in,v 1.1 2012/08/08 13:11:48 marino Exp $
+
+--- intl/Makefile.in.orig	2000-01-06 01:16:49.000000000 +0000
++++ intl/Makefile.in
+@@ -62,11 +62,11 @@ SOURCES = $(COMSRCS) intl-compat.c cat-c
+ COMSRCS = bindtextdom.c dcgettext.c dgettext.c gettext.c \
+ finddomain.c loadmsgcat.c localealias.c textdomain.c l10nflist.c \
+ explodename.c
+-OBJECTS = @INTLOBJS@ bindtextdom.$lo dcgettext.$lo dgettext.$lo gettext.$lo \
+-finddomain.$lo loadmsgcat.$lo localealias.$lo textdomain.$lo l10nflist.$lo \
+-explodename.$lo
+-CATOBJS = cat-compat.$lo ../po/cat-id-tbl.$lo
+-GETTOBJS = intl-compat.$lo
++OBJECTS = @INTLOBJS@ bindtextdom.o dcgettext.o dgettext.o gettext.o \
++finddomain.o loadmsgcat.o localealias.o textdomain.o l10nflist.o \
++explodename.o
++CATOBJS = cat-compat.o ../po/cat-id-tbl.o
++GETTOBJS = intl-compat.o
+ DISTFILES.common = ChangeLog Makefile.in linux-msg.sed po2tbl.sed.in \
+ xopen-msg.sed $(HEADERS) $(SOURCES)
+ DISTFILES.normal = VERSION
+@@ -83,7 +83,7 @@ INCLUDES = -I.. -I. -I$(top_srcdir)/intl
+ 
+ all: all-@USE_INCLUDED_LIBINTL@
+ 
+-all-yes: libintl.$la intlh.inst
++all-yes: libintl.a intlh.inst
+ all-no:
+ 
+ libintl.a: $(OBJECTS)
+@@ -95,8 +95,8 @@ libintl.la: $(OBJECTS)
+ 	$(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ $(OBJECTS) \
+ 		   -version-info 1:0 -rpath $(libdir)
+ 
+-../po/cat-id-tbl.$lo: ../po/cat-id-tbl.c $(top_srcdir)/po/$(PACKAGE).pot
+-	cd ../po && $(MAKE) cat-id-tbl.$lo
++../po/cat-id-tbl.o: ../po/cat-id-tbl.c $(top_srcdir)/po/$(PACKAGE).pot
++	cd ../po && $(MAKE) cat-id-tbl.o
+ 
+ check: all
+ 
+@@ -151,8 +151,8 @@ uninstall:
+ info dvi:
+ 
+ $(OBJECTS): ../config.h libgettext.h
+-bindtextdom.$lo finddomain.$lo loadmsgcat.$lo: gettextP.h gettext.h loadinfo.h
+-dcgettext.$lo: gettextP.h gettext.h hash-string.h loadinfo.h
++bindtextdom.o finddomain.o loadmsgcat.o: gettextP.h gettext.h loadinfo.h
++dcgettext.o: gettextP.h gettext.h hash-string.h loadinfo.h
+ 
+ tags: TAGS
+ 
+@@ -202,12 +202,8 @@ Makefile: Makefile.in ../config.status
+ # The dependency for intlh.inst is different in gettext and all other
+ # packages.  Because we cannot you GNU make features we have to solve
+ # the problem while rewriting Makefile.in.
+-@GT_YES%intlh.inst@localhost: intlh.inst.in ../config.status
+-@GT_YES@	cd .. \
+-@GT_YES@	&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= \
+-@GT_YES@	  $(SHELL) ./config.status
+-@GT_NO@.PHONY: intlh.inst
+-@GT_NO%intlh.inst@localhost:
++.PHONY: intlh.inst
++intlh.inst:
+ 
+ # Tell versions [3.59,3.63) of GNU make not to export all variables.
+ # Otherwise a system limit (for SysV at least) may be exceeded.


Home | Main Index | Thread Index | Old Index