commit: 59fdb5a02198e754874b540942acd3549ddd6a46 Author: Jaco Kroon <jkroon <AT> gentoo <DOT> org> AuthorDate: Wed Dec 3 08:39:17 2025 +0000 Commit: Jaco Kroon <jkroon <AT> gentoo <DOT> org> CommitDate: Wed Dec 3 20:36:11 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=59fdb5a0
net-dns/djbdns: 1.05-r41 for gcc15 patches. Closes: https://bugs.gentoo.org/945469 Signed-off-by: Jaco Kroon <jkroon <AT> gentoo.org> net-dns/djbdns/djbdns-1.05-r41.ebuild | 155 ++++ net-dns/djbdns/files/djbdns-gcc15-nov6.patch | 1102 ++++++++++++++++++++++++++ net-dns/djbdns/files/djbdns-gcc15-v6.patch | 939 ++++++++++++++++++++++ 3 files changed, 2196 insertions(+) diff --git a/net-dns/djbdns/djbdns-1.05-r41.ebuild b/net-dns/djbdns/djbdns-1.05-r41.ebuild new file mode 100644 index 000000000000..ae6c9bd03066 --- /dev/null +++ b/net-dns/djbdns/djbdns-1.05-r41.ebuild @@ -0,0 +1,155 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 +inherit flag-o-matic readme.gentoo-r1 toolchain-funcs + +DESCRIPTION="Collection of DNS client/server software" +HOMEPAGE="https://cr.yp.to/djbdns.html" +IPV6_PATCH="test32" + +SRC_URI="https://cr.yp.to/djbdns/${P}.tar.gz + https://smarden.org/pape/djb/manpages/${P}-man.tar.gz + ipv6? ( https://www.fefe.de/dns/${P}-${IPV6_PATCH}.diff.xz )" + +LICENSE="public-domain" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~hppa ~mips ~ppc ~ppc64 ~sparc ~x86" +IUSE="ipv6 selinux" + +RDEPEND=" + acct-user/dnscache + acct-user/dnslog + acct-user/tinydns + sys-apps/ucspi-tcp + virtual/daemontools + selinux? ( sec-policy/selinux-djbdns )" + +src_unpack() { + # Unpack both djbdns and its man pages to separate directories. + default + + # Now move the man pages under ${S} so that user patches can be + # applied to them as well in src_prepare(). + mv "${PN}-man" "${P}/man" || die "failed to transplant man pages" +} + +PATCHES=( + "${FILESDIR}/dnsroots.patch" + "${FILESDIR}/dnstracesort.patch" + "${FILESDIR}/string_length_255.patch" + "${FILESDIR}/srv_record_support.patch" + "${FILESDIR}/increase-cname-recustion-depth.patch" + "${FILESDIR}/CVE2009-0858_0001-check-response-domain-name-length.patch" + "${FILESDIR}/CVE2012-1191_0001-ghost-domain-attack.patch" + "${FILESDIR}/AR-and-RANLIB-support.patch" + "${FILESDIR}/tinydns-softlimit.patch" + "${FILESDIR}/${PN}-dnscache-configurable-truncate-manpages.patch" +) + +src_prepare() { + if use ipv6; then + PATCHES=(${PATCHES[@]} + # The big ipv6 patch. + "${WORKDIR}/${P}-${IPV6_PATCH}.diff" + # Fix CVE2008-4392 (ipv6) + "${FILESDIR}/CVE2008-4392_0001-dnscache-merge-similar-outgoing-queries-ipv6-test32.patch" + "${FILESDIR}/CVE2008-4392_0002-dnscache-cache-soa-records-ipv6-test29.patch" + "${FILESDIR}/${PN}-dnscache-configurable-truncate-size-v6.patch" + "${FILESDIR}/${PN}-udp-overflow-response-buffer-truncate-v6.patch" + "${FILESDIR}/${PN}-gcc15-v6.patch" + ) + else + PATCHES=(${PATCHES[@]} + "${FILESDIR}/implicit-declarations-nov6.patch" + # Fix CVE2008-4392 (no ipv6) + "${FILESDIR}/CVE2008-4392_0001-dnscache-merge-similar-outgoing-queries-r1.patch" + "${FILESDIR}/CVE2008-4392_0002-dnscache-cache-soa-records.patch" + # Later versions of the ipv6 patch include this + "${FILESDIR}/${PV}-errno-r1.patch" + "${FILESDIR}/${PN}-dnscache-configurable-truncate-size-nov6.patch" + "${FILESDIR}/${PN}-udp-overflow-response-buffer-truncate-nov6.patch" + "${FILESDIR}/${PN}-gcc15-nov6.patch" + ) + fi + + default + + # Change "head -X" to the posix-compatible "head -nX" within the + # Makefile. We do this with sed instead of a patch because the ipv6 + # patch uses some of the surrounding lines; we'd need two versions + # of the patch. + sed -i Makefile \ + -e 's/head[[:space:]]\{1,\}\-\([0-9]\{1,\}\)/head -n\1/g' \ + || die 'failed to sed head in the Makefile' +} + +src_compile() { + # djb is a skeptic when it comes to optimizing compilers. He doesn't like + # them "ruining" his code, thinks only algorithms matter for performance, + # and writes code that triggers UB warnings. Respect his point of view. + if is-flagq -O?; then + CFLAGS="-O2" + else + CFLAGS="" + fi + append-flags -fno-strict-aliasing + + # Bug 927539. This is beyond our ability to realistically fix due + # to patch conflicts. + append-cflags $(test-flags-CC -Wno-error=incompatible-pointer-types) + + echo "$(tc-getCC) ${CFLAGS}" > conf-cc || die + echo "$(tc-getCC) ${LDFLAGS}" > conf-ld || die + echo "/usr" > conf-home || die + emake AR=$(tc-getAR) RANLIB=$(tc-getRANLIB) +} + +src_install() { + insinto /etc + doins dnsroots.global + + into /usr + dobin *-conf dnscache tinydns walldns rbldns pickdns axfrdns \ + *-get *-data *-edit dnsip dnsipq dnsname dnstxt dnsmx \ + dnsfilter random-ip dnsqr dnsq dnstrace dnstracesort + + if use ipv6; then + dobin dnsip6 dnsip6q + fi + + dodoc CHANGES README + + doman man/*.[158] + + readme.gentoo_create_doc +} + +DISABLE_AUTOFORMATTING=1 +DOC_CONTENTS=' +To configure djbdns, please follow the instructions at, + + http://cr.yp.to/djbdns.html + +Of particular interest are, + + axfrdns : http://cr.yp.to/djbdns/axfrdns-conf.html + dnscache: http://cr.yp.to/djbdns/run-cache-x-home.html + tinydns : http://cr.yp.to/djbdns/run-server.html + +Portage has created users for axfrdns, dnscache, and tinydns; the +commands to configure these programs are, + + 1. axfrdns-conf tinydns dnslog /var/axfrdns /var/tinydns $ip + 2. dnscache-conf dnscache dnslog /var/dnscache $ip + 3. tinydns-conf tinydns dnslog /var/tinydns $ip + +(replace $ip with the ip address on which the server will run). + +If you wish to configure rbldns or walldns, you will need to create +those users yourself (although you should still use the "dnslog" +user for the logs): + + 4. rbldns-conf $username dnslog /var/rbldns $ip $base + 5. walldns-conf $username dnslog /var/walldns $ip +' diff --git a/net-dns/djbdns/files/djbdns-gcc15-nov6.patch b/net-dns/djbdns/files/djbdns-gcc15-nov6.patch new file mode 100644 index 000000000000..8152c9a46b17 --- /dev/null +++ b/net-dns/djbdns/files/djbdns-gcc15-nov6.patch @@ -0,0 +1,1102 @@ +Patches for gcc15. + +Signed-off-by: André Malo <[email protected]> +Reference: https://bugs.gentoo.org/945469 +diff '--color=auto' -Nur djbdns-1.05~/alloc.c djbdns-1.05/alloc.c +--- djbdns-1.05~/alloc.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/alloc.c 2025-12-02 22:43:49.677462093 +0100 +@@ -10,8 +10,7 @@ + #define space ((char *) realspace) + static unsigned int avail = SPACE; /* multiple of ALIGNMENT; 0<=avail<=SPACE */ + +-/*@null@*//*@out@*/char *alloc(n) +-unsigned int n; ++/*@null@*//*@out@*/void *alloc(size_t n) + { + char *x; + n = ALIGNMENT + n - (n & (ALIGNMENT - 1)); /* XXX: could overflow */ +@@ -21,9 +20,9 @@ + return x; + } + +-void alloc_free(x) +-char *x; ++void alloc_free(void *x_) + { ++ char *x = x_; + if (x >= space) + if (x < space + SPACE) + return; /* XXX: assuming that pointers are flat */ +diff '--color=auto' -Nur djbdns-1.05~/alloc.h djbdns-1.05/alloc.h +--- djbdns-1.05~/alloc.h 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/alloc.h 2025-12-02 22:43:49.677666536 +0100 +@@ -1,8 +1,10 @@ ++#include <stddef.h> ++ + #ifndef ALLOC_H + #define ALLOC_H + +-extern /*@null@*//*@out@*/char *alloc(); +-extern void alloc_free(); +-extern int alloc_re(); ++extern /*@null@*//*@out@*/void *alloc(size_t); ++extern void alloc_free(void *); ++extern int alloc_re(void *, size_t, size_t); + + #endif +diff '--color=auto' -Nur djbdns-1.05~/alloc_re.c djbdns-1.05/alloc_re.c +--- djbdns-1.05~/alloc_re.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/alloc_re.c 2025-12-02 22:43:49.677764806 +0100 +@@ -1,11 +1,9 @@ + #include "alloc.h" + #include "byte.h" + +-int alloc_re(x,m,n) +-char **x; +-unsigned int m; +-unsigned int n; ++int alloc_re(void *x_, size_t m, size_t n) + { ++ char **x = x_; + char *y; + + y = alloc(n); +diff '--color=auto' -Nur djbdns-1.05~/auto-str.c djbdns-1.05/auto-str.c +--- djbdns-1.05~/auto-str.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/auto-str.c 2025-12-02 22:43:49.677856118 +0100 +@@ -4,6 +4,7 @@ + char bspace[256]; + buffer b = BUFFER_INIT(buffer_unixwrite,1,bspace,sizeof bspace); + ++#define puts puts_ + void puts(const char *s) + { + if (buffer_puts(&b,s) == -1) _exit(111); +diff '--color=auto' -Nur djbdns-1.05~/axfr-get.c djbdns-1.05/axfr-get.c +--- djbdns-1.05~/axfr-get.c 2025-12-02 22:43:37.114107512 +0100 ++++ djbdns-1.05/axfr-get.c 2025-12-02 22:43:49.677982306 +0100 +@@ -360,7 +360,7 @@ + + fd = open_trunc(fntmp); + if (fd == -1) die_write(); +- buffer_init(&b,buffer_unixwrite,fd,bspace,sizeof bspace); ++ buffer_init(&b,(buffer_op)buffer_unixwrite,fd,bspace,sizeof bspace); + + if (!stralloc_copyb(&packet,"\0\0\0\0\0\1\0\0\0\0\0\0",12)) die_generate(); + if (!stralloc_catb(&packet,zone,zonelen)) die_generate(); +diff '--color=auto' -Nur djbdns-1.05~/buffer.c djbdns-1.05/buffer.c +--- djbdns-1.05~/buffer.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/buffer.c 2025-12-02 22:43:49.678114373 +0100 +@@ -1,6 +1,6 @@ + #include "buffer.h" + +-void buffer_init(buffer *s,int (*op)(),int fd,char *buf,unsigned int len) ++void buffer_init(buffer *s, buffer_op op, int fd, char *buf, size_t len) + { + s->x = buf; + s->fd = fd; +diff '--color=auto' -Nur djbdns-1.05~/buffer_get.c djbdns-1.05/buffer_get.c +--- djbdns-1.05~/buffer_get.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/buffer_get.c 2025-12-02 22:43:49.678243357 +0100 +@@ -2,7 +2,7 @@ + #include "byte.h" + #include "error.h" + +-static int oneread(int (*op)(),int fd,char *buf,unsigned int len) ++static ssize_t oneread(buffer_op op, int fd, char *buf, size_t len) + { + int r; + +@@ -13,7 +13,7 @@ + } + } + +-static int getthis(buffer *s,char *buf,unsigned int len) ++static ssize_t getthis(buffer *s, char *buf, size_t len) + { + if (len > s->p) len = s->p; + s->p -= len; +@@ -22,9 +22,9 @@ + return len; + } + +-int buffer_feed(buffer *s) ++ssize_t buffer_feed(buffer *s) + { +- int r; ++ ssize_t r; + + if (s->p) return s->p; + r = oneread(s->op,s->fd,s->x,s->n); +@@ -35,9 +35,9 @@ + return r; + } + +-int buffer_bget(buffer *s,char *buf,unsigned int len) ++ssize_t buffer_bget(buffer *s, char *buf, size_t len) + { +- int r; ++ ssize_t r; + + if (s->p > 0) return getthis(s,buf,len); + if (s->n <= len) return oneread(s->op,s->fd,buf,s->n); +@@ -45,9 +45,9 @@ + return getthis(s,buf,len); + } + +-int buffer_get(buffer *s,char *buf,unsigned int len) ++ssize_t buffer_get(buffer *s, char *buf, size_t len) + { +- int r; ++ ssize_t r; + + if (s->p > 0) return getthis(s,buf,len); + if (s->n <= len) return oneread(s->op,s->fd,buf,len); +@@ -60,7 +60,7 @@ + return s->x + s->n; + } + +-void buffer_seek(buffer *s,unsigned int len) ++void buffer_seek(buffer *s, size_t len) + { + s->n += len; + s->p -= len; +diff '--color=auto' -Nur djbdns-1.05~/buffer.h djbdns-1.05/buffer.h +--- djbdns-1.05~/buffer.h 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/buffer.h 2025-12-02 22:43:49.678364797 +0100 +@@ -1,27 +1,31 @@ ++#include <stddef.h> ++#include <sys/types.h> ++ + #ifndef BUFFER_H + #define BUFFER_H + ++typedef ssize_t (*buffer_op)(int, void *, size_t); + typedef struct buffer { + char *x; +- unsigned int p; +- unsigned int n; ++ size_t p; ++ size_t n; + int fd; +- int (*op)(); ++ buffer_op op; + } buffer; + +-#define BUFFER_INIT(op,fd,buf,len) { (buf), 0, (len), (fd), (op) } ++#define BUFFER_INIT(op,fd,buf,len) { (buf), 0, (len), (fd), ((buffer_op)(op)) } + #define BUFFER_INSIZE 8192 + #define BUFFER_OUTSIZE 8192 + +-extern void buffer_init(buffer *,int (*)(),int,char *,unsigned int); ++extern void buffer_init(buffer *, buffer_op, int, char *, size_t); + + extern int buffer_flush(buffer *); +-extern int buffer_put(buffer *,const char *,unsigned int); +-extern int buffer_putalign(buffer *,const char *,unsigned int); +-extern int buffer_putflush(buffer *,const char *,unsigned int); +-extern int buffer_puts(buffer *,const char *); +-extern int buffer_putsalign(buffer *,const char *); +-extern int buffer_putsflush(buffer *,const char *); ++extern int buffer_put(buffer *, const char *, size_t); ++extern int buffer_putalign(buffer *,const char *, size_t); ++extern int buffer_putflush(buffer *,const char *, size_t); ++extern int buffer_puts(buffer *, const char *); ++extern int buffer_putsalign(buffer *, const char *); ++extern int buffer_putsflush(buffer *, const char *); + + #define buffer_PUTC(s,c) \ + ( ((s)->n != (s)->p) \ +@@ -29,12 +33,12 @@ + : buffer_put((s),&(c),1) \ + ) + +-extern int buffer_get(buffer *,char *,unsigned int); +-extern int buffer_bget(buffer *,char *,unsigned int); +-extern int buffer_feed(buffer *); ++extern ssize_t buffer_get(buffer *, char *, size_t); ++extern ssize_t buffer_bget(buffer *, char *, size_t); ++extern ssize_t buffer_feed(buffer *); + + extern char *buffer_peek(buffer *); +-extern void buffer_seek(buffer *,unsigned int); ++extern void buffer_seek(buffer *, size_t); + + #define buffer_PEEK(s) ( (s)->x + (s)->n ) + #define buffer_SEEK(s,len) ( ( (s)->p -= (len) ) , ( (s)->n += (len) ) ) +@@ -47,8 +51,8 @@ + + extern int buffer_copy(buffer *,buffer *); + +-extern int buffer_unixread(int,char *,unsigned int); +-extern int buffer_unixwrite(int,const char *,unsigned int); ++extern ssize_t buffer_unixread(int, void *, size_t); ++extern ssize_t buffer_unixwrite(int, const void *, size_t); + + extern buffer *buffer_0; + extern buffer *buffer_0small; +diff '--color=auto' -Nur djbdns-1.05~/buffer_put.c djbdns-1.05/buffer_put.c +--- djbdns-1.05~/buffer_put.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/buffer_put.c 2025-12-02 22:43:49.678490334 +0100 +@@ -3,12 +3,12 @@ + #include "byte.h" + #include "error.h" + +-static int allwrite(int (*op)(),int fd,const char *buf,unsigned int len) ++static int allwrite(buffer_op op, int fd, const char *buf, size_t len) + { +- int w; ++ ssize_t w; + + while (len) { +- w = op(fd,buf,len); ++ w = op(fd,(char *)buf,len); + if (w == -1) { + if (errno == error_intr) continue; + return -1; /* note that some data may have been written */ +@@ -22,7 +22,7 @@ + + int buffer_flush(buffer *s) + { +- int p; ++ size_t p; + + p = s->p; + if (!p) return 0; +@@ -30,9 +30,9 @@ + return allwrite(s->op,s->fd,s->x,p); + } + +-int buffer_putalign(buffer *s,const char *buf,unsigned int len) ++int buffer_putalign(buffer *s, const char *buf, size_t len) + { +- unsigned int n; ++ size_t n; + + while (len > (n = s->n - s->p)) { + byte_copy(s->x + s->p,n,buf); s->p += n; buf += n; len -= n; +@@ -44,9 +44,9 @@ + return 0; + } + +-int buffer_put(buffer *s,const char *buf,unsigned int len) ++int buffer_put(buffer *s, const char *buf, size_t len) + { +- unsigned int n; ++ size_t n; + + n = s->n; + if (len > n - s->p) { +@@ -66,23 +66,23 @@ + return 0; + } + +-int buffer_putflush(buffer *s,const char *buf,unsigned int len) ++int buffer_putflush(buffer *s, const char *buf, size_t len) + { + if (buffer_flush(s) == -1) return -1; + return allwrite(s->op,s->fd,buf,len); + } + +-int buffer_putsalign(buffer *s,const char *buf) ++int buffer_putsalign(buffer *s, const char *buf) + { + return buffer_putalign(s,buf,str_len(buf)); + } + +-int buffer_puts(buffer *s,const char *buf) ++int buffer_puts(buffer *s, const char *buf) + { + return buffer_put(s,buf,str_len(buf)); + } + +-int buffer_putsflush(buffer *s,const char *buf) ++int buffer_putsflush(buffer *s, const char *buf) + { + return buffer_putflush(s,buf,str_len(buf)); + } +diff '--color=auto' -Nur djbdns-1.05~/buffer_read.c djbdns-1.05/buffer_read.c +--- djbdns-1.05~/buffer_read.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/buffer_read.c 2025-12-02 22:43:49.678576265 +0100 +@@ -1,7 +1,7 @@ + #include <unistd.h> + #include "buffer.h" + +-int buffer_unixread(int fd,char *buf,unsigned int len) ++ssize_t buffer_unixread(int fd, void *buf, size_t len) + { +- return read(fd,buf,len); ++ return read(fd,(char *)buf,len); + } +diff '--color=auto' -Nur djbdns-1.05~/buffer_write.c djbdns-1.05/buffer_write.c +--- djbdns-1.05~/buffer_write.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/buffer_write.c 2025-12-02 22:43:49.678662799 +0100 +@@ -1,7 +1,7 @@ + #include <unistd.h> + #include "buffer.h" + +-int buffer_unixwrite(int fd,const char *buf,unsigned int len) ++ssize_t buffer_unixwrite(int fd, const void *buf, size_t len) + { +- return write(fd,buf,len); ++ return write(fd,(const char *)buf,len); + } +diff '--color=auto' -Nur djbdns-1.05~/byte_chr.c djbdns-1.05/byte_chr.c +--- djbdns-1.05~/byte_chr.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/byte_chr.c 2025-12-02 22:43:49.678749499 +0100 +@@ -1,12 +1,9 @@ + #include "byte.h" + +-unsigned int byte_chr(s,n,c) +-char *s; +-register unsigned int n; +-int c; ++unsigned int byte_chr(const char *s, register size_t n, int c) + { + register char ch; +- register char *t; ++ register const char *t; + + ch = c; + t = s; +diff '--color=auto' -Nur djbdns-1.05~/byte_copy.c djbdns-1.05/byte_copy.c +--- djbdns-1.05~/byte_copy.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/byte_copy.c 2025-12-02 22:43:49.678836184 +0100 +@@ -1,10 +1,10 @@ + #include "byte.h" + +-void byte_copy(to,n,from) +-register char *to; +-register unsigned int n; +-register char *from; ++void byte_copy(void *to_, register size_t n, const void *from_) + { ++ register char *to = to_; ++ register const char *from = from_; ++ + for (;;) { + if (!n) return; *to++ = *from++; --n; + if (!n) return; *to++ = *from++; --n; +diff '--color=auto' -Nur djbdns-1.05~/byte_cr.c djbdns-1.05/byte_cr.c +--- djbdns-1.05~/byte_cr.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/byte_cr.c 2025-12-02 22:43:49.678921918 +0100 +@@ -1,10 +1,10 @@ + #include "byte.h" + +-void byte_copyr(to,n,from) +-register char *to; +-register unsigned int n; +-register char *from; ++void byte_copyr(void *to_, register size_t n, const void *from_) + { ++ register char *to = to_; ++ register const char *from = from_; ++ + to += n; + from += n; + for (;;) { +diff '--color=auto' -Nur djbdns-1.05~/byte_diff.c djbdns-1.05/byte_diff.c +--- djbdns-1.05~/byte_diff.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/byte_diff.c 2025-12-02 22:43:49.679006562 +0100 +@@ -1,9 +1,6 @@ + #include "byte.h" + +-int byte_diff(s,n,t) +-register char *s; +-register unsigned int n; +-register char *t; ++int byte_diff(register const unsigned char *s, register size_t n, register const unsigned char *t) + { + for (;;) { + if (!n) return 0; if (*s != *t) break; ++s; ++t; --n; +diff '--color=auto' -Nur djbdns-1.05~/byte.h djbdns-1.05/byte.h +--- djbdns-1.05~/byte.h 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/byte.h 2025-12-02 22:43:49.679094828 +0100 +@@ -1,12 +1,13 @@ ++#include <stddef.h> ++ + #ifndef BYTE_H + #define BYTE_H + +-extern unsigned int byte_chr(); +-extern unsigned int byte_rchr(); +-extern void byte_copy(); +-extern void byte_copyr(); +-extern int byte_diff(); +-extern void byte_zero(); ++extern unsigned int byte_chr(const char *, register size_t, int); ++extern void byte_copy(void *, register size_t, const void *); ++extern void byte_copyr(void *, register size_t, const void *); ++extern int byte_diff(register const unsigned char *, register size_t, register const unsigned char *); ++extern void byte_zero(void *, register size_t); + + #define byte_equal(s,n,t) (!byte_diff((s),(n),(t))) + +diff '--color=auto' -Nur djbdns-1.05~/byte_zero.c djbdns-1.05/byte_zero.c +--- djbdns-1.05~/byte_zero.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/byte_zero.c 2025-12-02 22:43:49.679184094 +0100 +@@ -1,9 +1,8 @@ + #include "byte.h" + +-void byte_zero(s,n) +-char *s; +-register unsigned int n; ++void byte_zero(void *s_, register size_t n) + { ++ char *s = s_; + for (;;) { + if (!n) break; *s++ = 0; --n; + if (!n) break; *s++ = 0; --n; +diff '--color=auto' -Nur djbdns-1.05~/cdb_make.c djbdns-1.05/cdb_make.c +--- djbdns-1.05~/cdb_make.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/cdb_make.c 2025-12-02 22:43:49.679283267 +0100 +@@ -14,7 +14,7 @@ + c->numentries = 0; + c->fd = fd; + c->pos = sizeof c->final; +- buffer_init(&c->b,buffer_unixwrite,fd,c->bspace,sizeof c->bspace); ++ buffer_init(&c->b,(buffer_op)buffer_unixwrite,fd,c->bspace,sizeof c->bspace); + return seek_set(fd,c->pos); + } + +diff '--color=auto' -Nur djbdns-1.05~/dnscache.c djbdns-1.05/dnscache.c +--- djbdns-1.05~/dnscache.c 2025-12-02 22:43:37.146897195 +0100 ++++ djbdns-1.05/dnscache.c 2025-12-02 22:43:49.679393606 +0100 +@@ -52,7 +52,7 @@ + static char buf[1024]; + uint64 numqueries = 0; + +-static unsigned int truncate_len = 512; ++static unsigned long truncate_len = 512; + + static int udp53; + +@@ -414,7 +414,7 @@ + socket_tryreservein(udp53,131072); + + byte_zero(seed,sizeof seed); +- read(0,seed,sizeof seed); ++ (void)read(0,seed,sizeof seed); + dns_random_init(seed); + close(0); + +diff '--color=auto' -Nur djbdns-1.05~/exit.h djbdns-1.05/exit.h +--- djbdns-1.05~/exit.h 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/exit.h 2025-12-02 22:43:49.679506642 +0100 +@@ -1,6 +1,6 @@ + #ifndef EXIT_H + #define EXIT_H + +-extern void _exit(); ++#include <unistd.h> + + #endif +diff '--color=auto' -Nur djbdns-1.05~/FILES djbdns-1.05/FILES +--- djbdns-1.05~/FILES 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/FILES 2025-12-02 22:43:49.679599711 +0100 +@@ -225,7 +225,6 @@ + trydrent.c + trylsock.c + trypoll.c +-tryshsgr.c + trysysel.c + tryulong32.c + tryulong64.c +diff '--color=auto' -Nur djbdns-1.05~/generic-conf.c djbdns-1.05/generic-conf.c +--- djbdns-1.05~/generic-conf.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/generic-conf.c 2025-12-02 22:43:49.679685284 +0100 +@@ -43,7 +43,7 @@ + fn = s; + fd = open_trunc(fn); + if (fd == -1) fail(); +- buffer_init(&ss,buffer_unixwrite,fd,buf,sizeof buf); ++ buffer_init(&ss,(buffer_op)buffer_unixwrite,fd,buf,sizeof buf); + } + + void outs(const char *s) +diff '--color=auto' -Nur djbdns-1.05~/hasshsgr.h1 djbdns-1.05/hasshsgr.h1 +--- djbdns-1.05~/hasshsgr.h1 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/hasshsgr.h1 1970-01-01 01:00:00.000000000 +0100 +@@ -1 +0,0 @@ +-/* sysdep: -shortsetgroups */ +diff '--color=auto' -Nur djbdns-1.05~/hasshsgr.h2 djbdns-1.05/hasshsgr.h2 +--- djbdns-1.05~/hasshsgr.h2 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/hasshsgr.h2 1970-01-01 01:00:00.000000000 +0100 +@@ -1,2 +0,0 @@ +-/* sysdep: +shortsetgroups */ +-#define HASSHORTSETGROUPS 1 +diff '--color=auto' -Nur djbdns-1.05~/hier.c djbdns-1.05/hier.c +--- djbdns-1.05~/hier.c 2025-12-02 22:43:37.135670301 +0100 ++++ djbdns-1.05/hier.c 2025-12-02 22:43:49.679872041 +0100 +@@ -1,9 +1,11 @@ ++#include <unistd.h> ++#include <sys/types.h> + #include "auto_home.h" + + /* implemented in install.c and/or instcheck.c */ +-void c(char*, char*, char*, int, int, int); +-void h(char*, int, int, int); +-void d(char*, char*, int, int, int); ++void c(const char*, const char*, const char*, uid_t, gid_t, mode_t); ++void h(const char*, uid_t, gid_t, mode_t); ++void d(const char*, const char*, uid_t, gid_t, mode_t); + + + void hier() +diff '--color=auto' -Nur djbdns-1.05~/install.c djbdns-1.05/install.c +--- djbdns-1.05~/install.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/install.c 2025-12-02 22:43:49.680010735 +0100 +@@ -13,11 +13,7 @@ + + int fdsourcedir = -1; + +-void h(home,uid,gid,mode) +-char *home; +-int uid; +-int gid; +-int mode; ++void h(const char *home, uid_t uid, gid_t gid, mode_t mode) + { + if (mkdir(home,0700) == -1) + if (errno != error_exist) +@@ -28,12 +24,7 @@ + strerr_die4sys(111,FATAL,"unable to chmod ",home,": "); + } + +-void d(home,subdir,uid,gid,mode) +-char *home; +-char *subdir; +-int uid; +-int gid; +-int mode; ++void d(const char *home, const char *subdir, uid_t uid, gid_t gid, mode_t mode) + { + if (chdir(home) == -1) + strerr_die4sys(111,FATAL,"unable to switch to ",home,": "); +@@ -51,13 +42,7 @@ + buffer ssin; + buffer ssout; + +-void c(home,subdir,file,uid,gid,mode) +-char *home; +-char *subdir; +-char *file; +-int uid; +-int gid; +-int mode; ++void c(const char *home, const char *subdir, const char *file, uid_t uid, gid_t gid, mode_t mode) + { + int fdin; + int fdout; +@@ -78,7 +63,7 @@ + fdout = open_trunc(file); + if (fdout == -1) + strerr_die6sys(111,FATAL,"unable to write .../",subdir,"/",file,": "); +- buffer_init(&ssout,buffer_unixwrite,fdout,outbuf,sizeof outbuf); ++ buffer_init(&ssout,(buffer_op)buffer_unixwrite,fdout,outbuf,sizeof outbuf); + + switch(buffer_copy(&ssout,&ssin)) { + case -2: +@@ -101,14 +86,7 @@ + strerr_die6sys(111,FATAL,"unable to chmod .../",subdir,"/",file,": "); + } + +-void z(home,subdir,file,len,uid,gid,mode) +-char *home; +-char *subdir; +-char *file; +-int len; +-int uid; +-int gid; +-int mode; ++void z(const char *home, const char *subdir, const char *file, int len, uid_t uid, gid_t gid, mode_t mode) + { + int fdout; + +@@ -120,7 +98,7 @@ + fdout = open_trunc(file); + if (fdout == -1) + strerr_die6sys(111,FATAL,"unable to write .../",subdir,"/",file,": "); +- buffer_init(&ssout,buffer_unixwrite,fdout,outbuf,sizeof outbuf); ++ buffer_init(&ssout,(buffer_op)buffer_unixwrite,fdout,outbuf,sizeof outbuf); + + while (len-- > 0) + if (buffer_put(&ssout,"",1) == -1) +@@ -139,7 +117,7 @@ + strerr_die6sys(111,FATAL,"unable to chmod .../",subdir,"/",file,": "); + } + +-int main() ++int main(void) + { + fdsourcedir = open_read("."); + if (fdsourcedir == -1) +diff '--color=auto' -Nur djbdns-1.05~/instcheck.c djbdns-1.05/instcheck.c +--- djbdns-1.05~/instcheck.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/instcheck.c 2025-12-02 22:43:49.680136082 +0100 +@@ -10,15 +10,7 @@ + #define FATAL "instcheck: fatal: " + #define WARNING "instcheck: warning: " + +-void perm(prefix1,prefix2,prefix3,file,type,uid,gid,mode) +-char *prefix1; +-char *prefix2; +-char *prefix3; +-char *file; +-int type; +-int uid; +-int gid; +-int mode; ++void perm(const char *prefix1, const char *prefix2, const char *prefix3, const char *file, mode_t type, uid_t uid, gid_t gid, mode_t mode) + { + struct stat st; + +@@ -40,46 +32,26 @@ + strerr_warn6(WARNING,prefix1,prefix2,prefix3,file," has wrong type",0); + } + +-void h(home,uid,gid,mode) +-char *home; +-int uid; +-int gid; +-int mode; ++void h(const char *home, uid_t uid, gid_t gid, mode_t mode) + { + perm("","","",home,S_IFDIR,uid,gid,mode); + } + +-void d(home,subdir,uid,gid,mode) +-char *home; +-char *subdir; +-int uid; +-int gid; +-int mode; ++void d(const char *home, const char *subdir, uid_t uid, gid_t gid, mode_t mode) + { + if (chdir(home) == -1) + strerr_die4sys(111,FATAL,"unable to switch to ",home,": "); + perm("",home,"/",subdir,S_IFDIR,uid,gid,mode); + } + +-void p(home,fifo,uid,gid,mode) +-char *home; +-char *fifo; +-int uid; +-int gid; +-int mode; ++void p(const char *home, const char *fifo, uid_t uid, gid_t gid, mode_t mode) + { + if (chdir(home) == -1) + strerr_die4sys(111,FATAL,"unable to switch to ",home,": "); + perm("",home,"/",fifo,S_IFIFO,uid,gid,mode); + } + +-void c(home,subdir,file,uid,gid,mode) +-char *home; +-char *subdir; +-char *file; +-int uid; +-int gid; +-int mode; ++void c(const char *home, const char *subdir, const char *file, uid_t uid, gid_t gid, mode_t mode) + { + if (chdir(home) == -1) + strerr_die4sys(111,FATAL,"unable to switch to ",home,": "); +@@ -88,20 +60,15 @@ + perm(".../",subdir,"/",file,S_IFREG,uid,gid,mode); + } + +-void z(home,file,len,uid,gid,mode) +-char *home; +-char *file; +-int len; +-int uid; +-int gid; +-int mode; ++void z(const char *home, const char *file, int len, uid_t uid, gid_t gid, mode_t mode) + { ++ (void)len; /* unused */ + if (chdir(home) == -1) + strerr_die4sys(111,FATAL,"unable to switch to ",home,": "); + perm("",home,"/",file,S_IFREG,uid,gid,mode); + } + +-int main() ++int main(void) + { + hier(); + _exit(0); +diff '--color=auto' -Nur djbdns-1.05~/Makefile djbdns-1.05/Makefile +--- djbdns-1.05~/Makefile 2025-12-02 22:43:37.154337056 +0100 ++++ djbdns-1.05/Makefile 2025-12-02 22:43:49.680312281 +0100 +@@ -510,12 +510,6 @@ + *) cat hasdevtcp.h1 ;; \ + esac ) > hasdevtcp.h + +-hasshsgr.h: \ +-choose compile load tryshsgr.c hasshsgr.h1 hasshsgr.h2 chkshsgr \ +-warn-shsgr +- ./chkshsgr || ( cat warn-shsgr; exit 1 ) +- ./choose clr tryshsgr hasshsgr.h1 hasshsgr.h2 > hasshsgr.h +- + hier.o: \ + compile hier.c auto_home.h + ./compile hier.c +@@ -682,7 +676,7 @@ + dnstrace dnstracesort cachetest utime rts + + prot.o: \ +-compile prot.c hasshsgr.h prot.h ++compile prot.c prot.h + ./compile prot.c + + qlog.o: \ +diff '--color=auto' -Nur djbdns-1.05~/prot.c djbdns-1.05/prot.c +--- djbdns-1.05~/prot.c 2025-12-02 22:43:37.135711312 +0100 ++++ djbdns-1.05/prot.c 2025-12-02 22:43:49.680484591 +0100 +@@ -1,21 +1,13 @@ + #include <grp.h> +-#include <unistd.h> +-#include "hasshsgr.h" + #include "prot.h" + +-int prot_gid(int gid) ++int prot_gid(gid_t gid) + { +-#ifdef HASSHORTSETGROUPS +- short x[2]; +- x[0] = gid; x[1] = 73; /* catch errors */ +- if (setgroups(1,x) == -1) return -1; +-#else + if (setgroups(1,&gid) == -1) return -1; +-#endif + return setgid(gid); /* _should_ be redundant, but on some systems it isn't */ + } + +-int prot_uid(int uid) ++int prot_uid(uid_t uid) + { + return setuid(uid); + } +diff '--color=auto' -Nur djbdns-1.05~/prot.h djbdns-1.05/prot.h +--- djbdns-1.05~/prot.h 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/prot.h 2025-12-02 22:43:49.680566680 +0100 +@@ -1,7 +1,9 @@ + #ifndef PROT_H + #define PROT_H + +-extern int prot_gid(int); +-extern int prot_uid(int); ++#include <unistd.h> ++ ++extern int prot_gid(gid_t); ++extern int prot_uid(uid_t); + + #endif +diff '--color=auto' -Nur djbdns-1.05~/scan.h djbdns-1.05/scan.h +--- djbdns-1.05~/scan.h 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/scan.h 2025-12-02 22:43:49.680657322 +0100 +@@ -1,28 +1,9 @@ ++#include <stddef.h> ++ + #ifndef SCAN_H + #define SCAN_H + +-extern unsigned int scan_uint(const char *,unsigned int *); +-extern unsigned int scan_xint(const char *,unsigned int *); +-extern unsigned int scan_nbbint(const char *,unsigned int,unsigned int,unsigned int,unsigned int *); +-extern unsigned int scan_ushort(const char *,unsigned short *); +-extern unsigned int scan_xshort(const char *,unsigned short *); +-extern unsigned int scan_nbbshort(const char *,unsigned int,unsigned int,unsigned int,unsigned short *); +-extern unsigned int scan_ulong(const char *,unsigned long *); +-extern unsigned int scan_xlong(const char *,unsigned long *); +-extern unsigned int scan_nbblong(const char *,unsigned int,unsigned int,unsigned int,unsigned long *); +- +-extern unsigned int scan_plusminus(const char *,int *); +-extern unsigned int scan_0x(const char *,unsigned int *); +- +-extern unsigned int scan_whitenskip(const char *,unsigned int); +-extern unsigned int scan_nonwhitenskip(const char *,unsigned int); +-extern unsigned int scan_charsetnskip(const char *,const char *,unsigned int); +-extern unsigned int scan_noncharsetnskip(const char *,const char *,unsigned int); +- +-extern unsigned int scan_strncmp(const char *,const char *,unsigned int); +-extern unsigned int scan_memcmp(const char *,const char *,unsigned int); +- +-extern unsigned int scan_long(const char *,long *); +-extern unsigned int scan_8long(const char *,unsigned long *); ++extern size_t scan_ulong(const char *,unsigned long *); ++extern size_t scan_xlong(const char *,unsigned long *); + + #endif +diff '--color=auto' -Nur djbdns-1.05~/scan_ulong.c djbdns-1.05/scan_ulong.c +--- djbdns-1.05~/scan_ulong.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/scan_ulong.c 2025-12-02 22:43:49.680737768 +0100 +@@ -1,8 +1,8 @@ + #include "scan.h" + +-unsigned int scan_ulong(register const char *s,register unsigned long *u) ++size_t scan_ulong(register const char *s,register unsigned long *u) + { +- register unsigned int pos = 0; ++ register size_t pos = 0; + register unsigned long result = 0; + register unsigned long c; + while ((c = (unsigned long) (unsigned char) (s[pos] - '0')) < 10) { +diff '--color=auto' -Nur djbdns-1.05~/select.h2 djbdns-1.05/select.h2 +--- djbdns-1.05~/select.h2 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/select.h2 2025-12-02 22:43:49.680813138 +0100 +@@ -6,6 +6,5 @@ + #include <sys/types.h> + #include <sys/time.h> + #include <sys/select.h> +-extern int select(); + + #endif +diff '--color=auto' -Nur djbdns-1.05~/server.c djbdns-1.05/server.c +--- djbdns-1.05~/server.c 2025-12-02 22:43:37.146971624 +0100 ++++ djbdns-1.05/server.c 2025-12-02 22:43:49.680899783 +0100 +@@ -84,7 +84,7 @@ + { + char *x; + int udp53; +- unsigned int truncate_len = 512; ++ unsigned long truncate_len = 512; + + x = env_get("IP"); + if (!x) +diff '--color=auto' -Nur djbdns-1.05~/socket_conn.c djbdns-1.05/socket_conn.c +--- djbdns-1.05~/socket_conn.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/socket_conn.c 2025-12-02 22:43:49.680984062 +0100 +@@ -26,7 +26,7 @@ + + dummy = sizeof sa; + if (getpeername(s,(struct sockaddr *) &sa,&dummy) == -1) { +- read(s,&ch,1); /* sets errno */ ++ (void)read(s,&ch,1); /* sets errno */ + return 0; + } + return 1; +diff '--color=auto' -Nur djbdns-1.05~/timeoutread.c djbdns-1.05/timeoutread.c +--- djbdns-1.05~/timeoutread.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/timeoutread.c 2025-12-02 22:43:49.681061544 +0100 +@@ -3,7 +3,7 @@ + #include "iopause.h" + #include "timeoutread.h" + +-int timeoutread(int t,int fd,char *buf,int len) ++ssize_t timeoutread(int t,int fd,char *buf,size_t len) + { + struct taia now; + struct taia deadline; +diff '--color=auto' -Nur djbdns-1.05~/timeoutread.h djbdns-1.05/timeoutread.h +--- djbdns-1.05~/timeoutread.h 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/timeoutread.h 2025-12-02 22:43:49.681137596 +0100 +@@ -1,6 +1,6 @@ + #ifndef TIMEOUTREAD_H + #define TIMEOUTREAD_H + +-extern int timeoutread(); ++extern ssize_t timeoutread(int, int, char *, size_t); + + #endif +diff '--color=auto' -Nur djbdns-1.05~/timeoutwrite.c djbdns-1.05/timeoutwrite.c +--- djbdns-1.05~/timeoutwrite.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/timeoutwrite.c 2025-12-02 22:43:49.681224643 +0100 +@@ -3,7 +3,7 @@ + #include "iopause.h" + #include "timeoutwrite.h" + +-int timeoutwrite(int t,int fd,char *buf,int len) ++ssize_t timeoutwrite(int t, int fd, const char *buf, size_t len) + { + struct taia now; + struct taia deadline; +diff '--color=auto' -Nur djbdns-1.05~/timeoutwrite.h djbdns-1.05/timeoutwrite.h +--- djbdns-1.05~/timeoutwrite.h 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/timeoutwrite.h 2025-12-02 22:43:49.681300449 +0100 +@@ -1,6 +1,6 @@ + #ifndef TIMEOUTWRITE_H + #define TIMEOUTWRITE_H + +-extern int timeoutwrite(); ++extern ssize_t timeoutwrite(int, int, const char *, size_t); + + #endif +diff '--color=auto' -Nur djbdns-1.05~/tinydns-data.c djbdns-1.05/tinydns-data.c +--- djbdns-1.05~/tinydns-data.c 2025-12-02 22:43:37.114329011 +0100 ++++ djbdns-1.05/tinydns-data.c 2025-12-02 22:43:49.681438800 +0100 +@@ -181,18 +181,26 @@ + strerr_die4x(111,FATAL,"unable to parse data line ",strnum,why); + } + ++static unsigned int scan_u32(const char *s,uint32 *u) { ++ unsigned long l; ++ unsigned int r=scan_ulong(s,&l); ++ if ((uint32)l != l) return 0; ++ if (r) *u=l; ++ return r; ++} ++ + int main() + { + int fddata; +- int i; +- int j; ++ unsigned int i; ++ unsigned int j; + int k; + char ch; + unsigned long ttl; + char ttd[8]; + char loc[2]; +- unsigned long u; +- char ip[4]; ++ uint32 u; ++ unsigned char ip[4]; + char type[2]; + char soa[20]; + char buf[4]; +@@ -252,19 +260,19 @@ + if (!dns_domain_fromdot(&d1,f[0].s,f[0].len)) nomem(); + + if (!stralloc_0(&f[3])) nomem(); +- if (!scan_ulong(f[3].s,&u)) uint32_unpack_big(defaultsoa,&u); ++ if (!scan_u32(f[3].s,&u)) uint32_unpack_big(defaultsoa,&u); + uint32_pack_big(soa,u); + if (!stralloc_0(&f[4])) nomem(); +- if (!scan_ulong(f[4].s,&u)) uint32_unpack_big(defaultsoa + 4,&u); ++ if (!scan_u32(f[4].s,&u)) uint32_unpack_big(defaultsoa + 4,&u); + uint32_pack_big(soa + 4,u); + if (!stralloc_0(&f[5])) nomem(); +- if (!scan_ulong(f[5].s,&u)) uint32_unpack_big(defaultsoa + 8,&u); ++ if (!scan_u32(f[5].s,&u)) uint32_unpack_big(defaultsoa + 8,&u); + uint32_pack_big(soa + 8,u); + if (!stralloc_0(&f[6])) nomem(); +- if (!scan_ulong(f[6].s,&u)) uint32_unpack_big(defaultsoa + 12,&u); ++ if (!scan_u32(f[6].s,&u)) uint32_unpack_big(defaultsoa + 12,&u); + uint32_pack_big(soa + 12,u); + if (!stralloc_0(&f[7])) nomem(); +- if (!scan_ulong(f[7].s,&u)) uint32_unpack_big(defaultsoa + 16,&u); ++ if (!scan_u32(f[7].s,&u)) uint32_unpack_big(defaultsoa + 16,&u); + uint32_pack_big(soa + 16,u); + + if (!stralloc_0(&f[8])) nomem(); +@@ -311,7 +319,7 @@ + + if (ip4_scan(f[1].s,ip)) { + rr_start(DNS_T_A,ttl,ttd,loc); +- rr_add(ip,4); ++ rr_add((const char*)ip,4); + rr_finish(d2); + } + +@@ -328,7 +336,7 @@ + + if (ip4_scan(f[1].s,ip)) { + rr_start(DNS_T_A,ttl,ttd,loc); +- rr_add(ip,4); ++ rr_add((const char*)ip,4); + rr_finish(d1); + + if (line.s[0] == '=') { +@@ -356,7 +364,7 @@ + if (!dns_domain_fromdot(&d2,f[2].s,f[2].len)) nomem(); + + if (!stralloc_0(&f[3])) nomem(); +- if (!scan_ulong(f[3].s,&u)) u = 0; ++ if (!scan_u32(f[3].s,&u)) u = 0; + + rr_start(DNS_T_MX,ttl,ttd,loc); + uint16_pack_big(buf,u); +@@ -366,7 +374,7 @@ + + if (ip4_scan(f[1].s,ip)) { + rr_start(DNS_T_A,ttl,ttd,loc); +- rr_add(ip,4); ++ rr_add((const char*)ip,4); + rr_finish(d2); + } + break; +@@ -387,13 +395,13 @@ + if (!dns_domain_fromdot(&d2,f[2].s,f[2].len)) nomem(); + + if (!stralloc_0(&f[4])) nomem(); +- if (!scan_ulong(f[4].s,&u)) u = 0; ++ if (!scan_u32(f[4].s,&u)) u = 0; + uint16_pack_big(srv,u); + if (!stralloc_0(&f[5])) nomem(); +- if (!scan_ulong(f[5].s,&u)) u = 0; ++ if (!scan_u32(f[5].s,&u)) u = 0; + uint16_pack_big(srv + 2,u); + if (!stralloc_0(&f[3])) nomem(); +- if (!scan_ulong(f[3].s,&u)) nomem(); ++ if (!scan_u32(f[3].s,&u)) nomem(); + uint16_pack_big(srv + 4,u); + + rr_start(DNS_T_SRV,ttl,ttd,loc); +@@ -455,7 +463,7 @@ + locparse(&f[5],loc); + + if (!stralloc_0(&f[1])) nomem(); +- scan_ulong(f[1].s,&u); ++ scan_u32(f[1].s,&u); + uint16_pack_big(type,u); + if (byte_equal(type,2,DNS_T_AXFR)) + syntaxerror(": type AXFR prohibited"); +diff '--color=auto' -Nur djbdns-1.05~/tinydns-edit.c djbdns-1.05/tinydns-edit.c +--- djbdns-1.05~/tinydns-edit.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/tinydns-edit.c 2025-12-02 22:43:49.681607275 +0100 +@@ -116,7 +116,7 @@ + fdnew = open_trunc(fnnew); + if (fdnew == -1) die_write(); + if (fchmod(fdnew,st.st_mode & 0644) == -1) die_write(); +- buffer_init(&bnew,buffer_unixwrite,fdnew,bnewspace,sizeof bnewspace); ++ buffer_init(&bnew,(buffer_op)buffer_unixwrite,fdnew,bnewspace,sizeof bnewspace); + + switch(mode) { + case '.': case '&': +diff '--color=auto' -Nur djbdns-1.05~/tryshsgr.c djbdns-1.05/tryshsgr.c +--- djbdns-1.05~/tryshsgr.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/tryshsgr.c 1970-01-01 01:00:00.000000000 +0100 +@@ -1,14 +0,0 @@ +-int main() +-{ +- short x[4]; +- +- x[0] = x[1] = 1; +- if (getgroups(1,x) == 0) if (setgroups(1,x) == -1) _exit(1); +- +- if (getgroups(1,x) == -1) _exit(1); +- if (x[1] != 1) _exit(1); +- x[1] = 2; +- if (getgroups(1,x) == -1) _exit(1); +- if (x[1] != 2) _exit(1); +- _exit(0); +-} +diff '--color=auto' -Nur djbdns-1.05~/utime.c djbdns-1.05/utime.c +--- djbdns-1.05~/utime.c 2025-12-02 22:43:37.135798404 +0100 ++++ djbdns-1.05/utime.c 2025-12-02 22:44:19.625306556 +0100 +@@ -8,10 +8,11 @@ + + char *ustr; + unsigned long u; +-time_t ut[2]; ++struct utimbuf ut; + + int main(int argc,char **argv) + { ++ (void)argc; /* unused */ + fn = argv[1]; + if (!fn) _exit(100); + +@@ -19,7 +20,7 @@ + if (!ustr) _exit(100); + scan_ulong(ustr,&u); + +- ut[0] = ut[1] = u; +- if (utime(fn,ut) == -1) _exit(111); ++ ut.actime = ut.modtime = u; ++ if (utime(fn,&ut) == -1) _exit(111); + _exit(0); + } diff --git a/net-dns/djbdns/files/djbdns-gcc15-v6.patch b/net-dns/djbdns/files/djbdns-gcc15-v6.patch new file mode 100644 index 000000000000..b9bdfca761f6 --- /dev/null +++ b/net-dns/djbdns/files/djbdns-gcc15-v6.patch @@ -0,0 +1,939 @@ +Patches for gcc15. + +Signed-off-by: André Malo <[email protected]> +Reference: https://bugs.gentoo.org/945469 +diff '--color=auto' -Nur djbdns-1.05~/alloc.c djbdns-1.05/alloc.c +--- djbdns-1.05~/alloc.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/alloc.c 2025-12-02 21:10:22.041056713 +0100 +@@ -10,8 +10,7 @@ + #define space ((char *) realspace) + static unsigned int avail = SPACE; /* multiple of ALIGNMENT; 0<=avail<=SPACE */ + +-/*@null@*//*@out@*/char *alloc(n) +-unsigned int n; ++/*@null@*//*@out@*/void *alloc(size_t n) + { + char *x; + n = ALIGNMENT + n - (n & (ALIGNMENT - 1)); /* XXX: could overflow */ +@@ -21,9 +20,9 @@ + return x; + } + +-void alloc_free(x) +-char *x; ++void alloc_free(void *x_) + { ++ char *x = x_; + if (x >= space) + if (x < space + SPACE) + return; /* XXX: assuming that pointers are flat */ +diff '--color=auto' -Nur djbdns-1.05~/alloc.h djbdns-1.05/alloc.h +--- djbdns-1.05~/alloc.h 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/alloc.h 2025-12-02 21:10:22.041311337 +0100 +@@ -1,8 +1,10 @@ ++#include <stddef.h> ++ + #ifndef ALLOC_H + #define ALLOC_H + +-extern /*@null@*//*@out@*/char *alloc(); +-extern void alloc_free(); +-extern int alloc_re(); ++extern /*@null@*//*@out@*/void *alloc(size_t); ++extern void alloc_free(void *); ++extern int alloc_re(void *, size_t, size_t); + + #endif +diff '--color=auto' -Nur djbdns-1.05~/alloc_re.c djbdns-1.05/alloc_re.c +--- djbdns-1.05~/alloc_re.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/alloc_re.c 2025-12-02 21:10:22.041427910 +0100 +@@ -1,11 +1,9 @@ + #include "alloc.h" + #include "byte.h" + +-int alloc_re(x,m,n) +-char **x; +-unsigned int m; +-unsigned int n; ++int alloc_re(void *x_, size_t m, size_t n) + { ++ char **x = x_; + char *y; + + y = alloc(n); +diff '--color=auto' -Nur djbdns-1.05~/axfr-get.c djbdns-1.05/axfr-get.c +--- djbdns-1.05~/axfr-get.c 2025-12-02 21:09:06.740092187 +0100 ++++ djbdns-1.05/axfr-get.c 2025-12-02 21:10:22.041581599 +0100 +@@ -371,7 +371,7 @@ + + fd = open_trunc(fntmp); + if (fd == -1) die_write(); +- buffer_init(&b,buffer_unixwrite,fd,bspace,sizeof bspace); ++ buffer_init(&b,(buffer_op)buffer_unixwrite,fd,bspace,sizeof bspace); + + if (!stralloc_copyb(&packet,"\0\0\0\0\0\1\0\0\0\0\0\0",12)) die_generate(); + if (!stralloc_catb(&packet,zone,zonelen)) die_generate(); +diff '--color=auto' -Nur djbdns-1.05~/buffer.c djbdns-1.05/buffer.c +--- djbdns-1.05~/buffer.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/buffer.c 2025-12-02 21:10:22.041723489 +0100 +@@ -1,6 +1,6 @@ + #include "buffer.h" + +-void buffer_init(buffer *s,int (*op)(),int fd,char *buf,unsigned int len) ++void buffer_init(buffer *s, buffer_op op, int fd, char *buf, size_t len) + { + s->x = buf; + s->fd = fd; +diff '--color=auto' -Nur djbdns-1.05~/buffer_get.c djbdns-1.05/buffer_get.c +--- djbdns-1.05~/buffer_get.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/buffer_get.c 2025-12-02 21:10:22.041859592 +0100 +@@ -2,7 +2,7 @@ + #include "byte.h" + #include "error.h" + +-static int oneread(int (*op)(),int fd,char *buf,unsigned int len) ++static ssize_t oneread(buffer_op op, int fd, char *buf, size_t len) + { + int r; + +@@ -13,7 +13,7 @@ + } + } + +-static int getthis(buffer *s,char *buf,unsigned int len) ++static ssize_t getthis(buffer *s, char *buf, size_t len) + { + if (len > s->p) len = s->p; + s->p -= len; +@@ -22,9 +22,9 @@ + return len; + } + +-int buffer_feed(buffer *s) ++ssize_t buffer_feed(buffer *s) + { +- int r; ++ ssize_t r; + + if (s->p) return s->p; + r = oneread(s->op,s->fd,s->x,s->n); +@@ -35,9 +35,9 @@ + return r; + } + +-int buffer_bget(buffer *s,char *buf,unsigned int len) ++ssize_t buffer_bget(buffer *s, char *buf, size_t len) + { +- int r; ++ ssize_t r; + + if (s->p > 0) return getthis(s,buf,len); + if (s->n <= len) return oneread(s->op,s->fd,buf,s->n); +@@ -45,9 +45,9 @@ + return getthis(s,buf,len); + } + +-int buffer_get(buffer *s,char *buf,unsigned int len) ++ssize_t buffer_get(buffer *s, char *buf, size_t len) + { +- int r; ++ ssize_t r; + + if (s->p > 0) return getthis(s,buf,len); + if (s->n <= len) return oneread(s->op,s->fd,buf,len); +@@ -60,7 +60,7 @@ + return s->x + s->n; + } + +-void buffer_seek(buffer *s,unsigned int len) ++void buffer_seek(buffer *s, size_t len) + { + s->n += len; + s->p -= len; +diff '--color=auto' -Nur djbdns-1.05~/buffer.h djbdns-1.05/buffer.h +--- djbdns-1.05~/buffer.h 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/buffer.h 2025-12-02 21:10:22.041998667 +0100 +@@ -1,27 +1,31 @@ ++#include <stddef.h> ++#include <sys/types.h> ++ + #ifndef BUFFER_H + #define BUFFER_H + ++typedef ssize_t (*buffer_op)(int, void *, size_t); + typedef struct buffer { + char *x; +- unsigned int p; +- unsigned int n; ++ size_t p; ++ size_t n; + int fd; +- int (*op)(); ++ buffer_op op; + } buffer; + +-#define BUFFER_INIT(op,fd,buf,len) { (buf), 0, (len), (fd), (op) } ++#define BUFFER_INIT(op,fd,buf,len) { (buf), 0, (len), (fd), ((buffer_op)(op)) } + #define BUFFER_INSIZE 8192 + #define BUFFER_OUTSIZE 8192 + +-extern void buffer_init(buffer *,int (*)(),int,char *,unsigned int); ++extern void buffer_init(buffer *, buffer_op, int, char *, size_t); + + extern int buffer_flush(buffer *); +-extern int buffer_put(buffer *,const char *,unsigned int); +-extern int buffer_putalign(buffer *,const char *,unsigned int); +-extern int buffer_putflush(buffer *,const char *,unsigned int); +-extern int buffer_puts(buffer *,const char *); +-extern int buffer_putsalign(buffer *,const char *); +-extern int buffer_putsflush(buffer *,const char *); ++extern int buffer_put(buffer *, const char *, size_t); ++extern int buffer_putalign(buffer *,const char *, size_t); ++extern int buffer_putflush(buffer *,const char *, size_t); ++extern int buffer_puts(buffer *, const char *); ++extern int buffer_putsalign(buffer *, const char *); ++extern int buffer_putsflush(buffer *, const char *); + + #define buffer_PUTC(s,c) \ + ( ((s)->n != (s)->p) \ +@@ -29,12 +33,12 @@ + : buffer_put((s),&(c),1) \ + ) + +-extern int buffer_get(buffer *,char *,unsigned int); +-extern int buffer_bget(buffer *,char *,unsigned int); +-extern int buffer_feed(buffer *); ++extern ssize_t buffer_get(buffer *, char *, size_t); ++extern ssize_t buffer_bget(buffer *, char *, size_t); ++extern ssize_t buffer_feed(buffer *); + + extern char *buffer_peek(buffer *); +-extern void buffer_seek(buffer *,unsigned int); ++extern void buffer_seek(buffer *, size_t); + + #define buffer_PEEK(s) ( (s)->x + (s)->n ) + #define buffer_SEEK(s,len) ( ( (s)->p -= (len) ) , ( (s)->n += (len) ) ) +@@ -47,8 +51,8 @@ + + extern int buffer_copy(buffer *,buffer *); + +-extern int buffer_unixread(int,char *,unsigned int); +-extern int buffer_unixwrite(int,const char *,unsigned int); ++extern ssize_t buffer_unixread(int, void *, size_t); ++extern ssize_t buffer_unixwrite(int, const void *, size_t); + + extern buffer *buffer_0; + extern buffer *buffer_0small; +diff '--color=auto' -Nur djbdns-1.05~/buffer_put.c djbdns-1.05/buffer_put.c +--- djbdns-1.05~/buffer_put.c 2025-12-02 21:09:06.740392048 +0100 ++++ djbdns-1.05/buffer_put.c 2025-12-02 21:10:22.042140686 +0100 +@@ -3,12 +3,12 @@ + #include "byte.h" + #include "error.h" + +-static int allwrite(int (*op)(),int fd,const char *buf,unsigned int len) ++static int allwrite(buffer_op op, int fd, const char *buf, size_t len) + { +- int w; ++ ssize_t w; + + while (len) { +- w = op(fd,buf,len); ++ w = op(fd,(char *)buf,len); + if (w == -1) { + if (errno == error_intr) continue; + return -1; /* note that some data may have been written */ +@@ -22,7 +22,7 @@ + + int buffer_flush(buffer *s) + { +- int p; ++ size_t p; + + p = s->p; + if (!p) return 0; +@@ -30,9 +30,9 @@ + return allwrite(s->op,s->fd,s->x,p); + } + +-int buffer_putalign(buffer *s,const char *buf,unsigned int len) ++int buffer_putalign(buffer *s, const char *buf, size_t len) + { +- unsigned int n; ++ size_t n; + + while (len > (n = s->n - s->p)) { + byte_copy(s->x + s->p,n,buf); s->p += n; buf += n; len -= n; +@@ -44,9 +44,9 @@ + return 0; + } + +-int buffer_put(buffer *s,const char *buf,unsigned int len) ++int buffer_put(buffer *s, const char *buf, size_t len) + { +- unsigned int n; ++ size_t n; + + n = s->n; + if (len > n - s->p) { +@@ -66,23 +66,23 @@ + return 0; + } + +-int buffer_putflush(buffer *s,const char *buf,unsigned int len) ++int buffer_putflush(buffer *s, const char *buf, size_t len) + { + if (buffer_flush(s) == -1) return -1; + return allwrite(s->op,s->fd,buf,len); + } + +-int buffer_putsalign(buffer *s,const char *buf) ++int buffer_putsalign(buffer *s, const char *buf) + { + return buffer_putalign(s,buf,str_len(buf)); + } + +-int buffer_puts(buffer *s,const char *buf) ++int buffer_puts(buffer *s, const char *buf) + { + return buffer_put(s,buf,str_len(buf)); + } + +-int buffer_putsflush(buffer *s,const char *buf) ++int buffer_putsflush(buffer *s, const char *buf) + { + return buffer_putflush(s,buf,str_len(buf)); + } +diff '--color=auto' -Nur djbdns-1.05~/buffer_read.c djbdns-1.05/buffer_read.c +--- djbdns-1.05~/buffer_read.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/buffer_read.c 2025-12-02 21:10:22.042249620 +0100 +@@ -1,7 +1,7 @@ + #include <unistd.h> + #include "buffer.h" + +-int buffer_unixread(int fd,char *buf,unsigned int len) ++ssize_t buffer_unixread(int fd, void *buf, size_t len) + { +- return read(fd,buf,len); ++ return read(fd,(char *)buf,len); + } +diff '--color=auto' -Nur djbdns-1.05~/buffer_write.c djbdns-1.05/buffer_write.c +--- djbdns-1.05~/buffer_write.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/buffer_write.c 2025-12-02 21:10:22.042357153 +0100 +@@ -1,7 +1,7 @@ + #include <unistd.h> + #include "buffer.h" + +-int buffer_unixwrite(int fd,const char *buf,unsigned int len) ++ssize_t buffer_unixwrite(int fd, const void *buf, size_t len) + { +- return write(fd,buf,len); ++ return write(fd,(const char *)buf,len); + } +diff '--color=auto' -Nur djbdns-1.05~/byte_chr.c djbdns-1.05/byte_chr.c +--- djbdns-1.05~/byte_chr.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/byte_chr.c 2025-12-02 21:10:22.042455234 +0100 +@@ -1,12 +1,9 @@ + #include "byte.h" + +-unsigned int byte_chr(s,n,c) +-char *s; +-register unsigned int n; +-int c; ++unsigned int byte_chr(const char *s, register size_t n, int c) + { + register char ch; +- register char *t; ++ register const char *t; + + ch = c; + t = s; +diff '--color=auto' -Nur djbdns-1.05~/byte_copy.c djbdns-1.05/byte_copy.c +--- djbdns-1.05~/byte_copy.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/byte_copy.c 2025-12-02 21:10:22.042559151 +0100 +@@ -1,10 +1,10 @@ + #include "byte.h" + +-void byte_copy(to,n,from) +-register char *to; +-register unsigned int n; +-register char *from; ++void byte_copy(void *to_, register size_t n, const void *from_) + { ++ register char *to = to_; ++ register const char *from = from_; ++ + for (;;) { + if (!n) return; *to++ = *from++; --n; + if (!n) return; *to++ = *from++; --n; +diff '--color=auto' -Nur djbdns-1.05~/byte_cr.c djbdns-1.05/byte_cr.c +--- djbdns-1.05~/byte_cr.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/byte_cr.c 2025-12-02 21:10:22.042658751 +0100 +@@ -1,10 +1,10 @@ + #include "byte.h" + +-void byte_copyr(to,n,from) +-register char *to; +-register unsigned int n; +-register char *from; ++void byte_copyr(void *to_, register size_t n, const void *from_) + { ++ register char *to = to_; ++ register const char *from = from_; ++ + to += n; + from += n; + for (;;) { +diff '--color=auto' -Nur djbdns-1.05~/byte_diff.c djbdns-1.05/byte_diff.c +--- djbdns-1.05~/byte_diff.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/byte_diff.c 2025-12-02 21:10:22.042754495 +0100 +@@ -1,9 +1,6 @@ + #include "byte.h" + +-int byte_diff(s,n,t) +-register char *s; +-register unsigned int n; +-register char *t; ++int byte_diff(register const unsigned char *s, register size_t n, register const unsigned char *t) + { + for (;;) { + if (!n) return 0; if (*s != *t) break; ++s; ++t; --n; +diff '--color=auto' -Nur djbdns-1.05~/byte.h djbdns-1.05/byte.h +--- djbdns-1.05~/byte.h 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/byte.h 2025-12-02 21:10:22.042849665 +0100 +@@ -1,12 +1,13 @@ ++#include <stddef.h> ++ + #ifndef BYTE_H + #define BYTE_H + +-extern unsigned int byte_chr(); +-extern unsigned int byte_rchr(); +-extern void byte_copy(); +-extern void byte_copyr(); +-extern int byte_diff(); +-extern void byte_zero(); ++extern unsigned int byte_chr(const char *, register size_t, int); ++extern void byte_copy(void *, register size_t, const void *); ++extern void byte_copyr(void *, register size_t, const void *); ++extern int byte_diff(register const unsigned char *, register size_t, register const unsigned char *); ++extern void byte_zero(void *, register size_t); + + #define byte_equal(s,n,t) (!byte_diff((s),(n),(t))) + +diff '--color=auto' -Nur djbdns-1.05~/byte_zero.c djbdns-1.05/byte_zero.c +--- djbdns-1.05~/byte_zero.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/byte_zero.c 2025-12-02 21:10:22.042940277 +0100 +@@ -1,9 +1,8 @@ + #include "byte.h" + +-void byte_zero(s,n) +-char *s; +-register unsigned int n; ++void byte_zero(void *s_, register size_t n) + { ++ char *s = s_; + for (;;) { + if (!n) break; *s++ = 0; --n; + if (!n) break; *s++ = 0; --n; +diff '--color=auto' -Nur djbdns-1.05~/cdb_make.c djbdns-1.05/cdb_make.c +--- djbdns-1.05~/cdb_make.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/cdb_make.c 2025-12-02 21:10:22.043043560 +0100 +@@ -14,7 +14,7 @@ + c->numentries = 0; + c->fd = fd; + c->pos = sizeof c->final; +- buffer_init(&c->b,buffer_unixwrite,fd,c->bspace,sizeof c->bspace); ++ buffer_init(&c->b,(buffer_op)buffer_unixwrite,fd,c->bspace,sizeof c->bspace); + return seek_set(fd,c->pos); + } + +diff '--color=auto' -Nur djbdns-1.05~/dnscache.c djbdns-1.05/dnscache.c +--- djbdns-1.05~/dnscache.c 2025-12-02 21:09:06.755741260 +0100 ++++ djbdns-1.05/dnscache.c 2025-12-02 21:10:22.043064395 +0100 +@@ -58,7 +58,7 @@ + static char buf[1024]; + uint64 numqueries = 0; + +-static unsigned int truncate_len = 512; ++static unsigned long truncate_len = 512; + + static int udp53; + +@@ -433,7 +433,7 @@ + socket_tryreservein(udp53,131072); + + byte_zero(seed,sizeof seed); +- read(0,seed,sizeof seed); ++ (void)read(0,seed,sizeof seed); + dns_random_init(seed); + close(0); + +diff '--color=auto' -Nur djbdns-1.05~/FILES djbdns-1.05/FILES +--- djbdns-1.05~/FILES 2025-12-02 21:09:06.739371861 +0100 ++++ djbdns-1.05/FILES 2025-12-02 21:10:37.403618043 +0100 +@@ -168,7 +168,6 @@ + readclose.c + readclose.h + scan.h +-scan_0x.c + scan_ulong.c + seek.h + seek_set.c +@@ -230,7 +229,6 @@ + trydrent.c + trylsock.c + trypoll.c +-tryshsgr.c + trysysel.c + tryulong32.c + tryulong64.c +diff '--color=auto' -Nur djbdns-1.05~/generic-conf.c djbdns-1.05/generic-conf.c +--- djbdns-1.05~/generic-conf.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/generic-conf.c 2025-12-02 21:10:22.043421352 +0100 +@@ -43,7 +43,7 @@ + fn = s; + fd = open_trunc(fn); + if (fd == -1) fail(); +- buffer_init(&ss,buffer_unixwrite,fd,buf,sizeof buf); ++ buffer_init(&ss,(buffer_op)buffer_unixwrite,fd,buf,sizeof buf); + } + + void outs(const char *s) +diff '--color=auto' -Nur djbdns-1.05~/hasshsgr.h1 djbdns-1.05/hasshsgr.h1 +--- djbdns-1.05~/hasshsgr.h1 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/hasshsgr.h1 1970-01-01 01:00:00.000000000 +0100 +@@ -1 +0,0 @@ +-/* sysdep: -shortsetgroups */ +diff '--color=auto' -Nur djbdns-1.05~/hasshsgr.h2 djbdns-1.05/hasshsgr.h2 +--- djbdns-1.05~/hasshsgr.h2 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/hasshsgr.h2 1970-01-01 01:00:00.000000000 +0100 +@@ -1,2 +0,0 @@ +-/* sysdep: +shortsetgroups */ +-#define HASSHORTSETGROUPS 1 +diff '--color=auto' -Nur djbdns-1.05~/install.c djbdns-1.05/install.c +--- djbdns-1.05~/install.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/install.c 2025-12-02 21:10:22.043668394 +0100 +@@ -13,11 +13,7 @@ + + int fdsourcedir = -1; + +-void h(home,uid,gid,mode) +-char *home; +-int uid; +-int gid; +-int mode; ++void h(char *home, int uid, int gid, int mode) + { + if (mkdir(home,0700) == -1) + if (errno != error_exist) +@@ -28,12 +24,7 @@ + strerr_die4sys(111,FATAL,"unable to chmod ",home,": "); + } + +-void d(home,subdir,uid,gid,mode) +-char *home; +-char *subdir; +-int uid; +-int gid; +-int mode; ++void d(char *home, char *subdir, int uid, int gid, int mode) + { + if (chdir(home) == -1) + strerr_die4sys(111,FATAL,"unable to switch to ",home,": "); +@@ -51,13 +42,7 @@ + buffer ssin; + buffer ssout; + +-void c(home,subdir,file,uid,gid,mode) +-char *home; +-char *subdir; +-char *file; +-int uid; +-int gid; +-int mode; ++void c(char *home, char *subdir, char *file, int uid, int gid, int mode) + { + int fdin; + int fdout; +@@ -78,7 +63,7 @@ + fdout = open_trunc(file); + if (fdout == -1) + strerr_die6sys(111,FATAL,"unable to write .../",subdir,"/",file,": "); +- buffer_init(&ssout,buffer_unixwrite,fdout,outbuf,sizeof outbuf); ++ buffer_init(&ssout,(buffer_op)buffer_unixwrite,fdout,outbuf,sizeof outbuf); + + switch(buffer_copy(&ssout,&ssin)) { + case -2: +@@ -101,14 +86,7 @@ + strerr_die6sys(111,FATAL,"unable to chmod .../",subdir,"/",file,": "); + } + +-void z(home,subdir,file,len,uid,gid,mode) +-char *home; +-char *subdir; +-char *file; +-int len; +-int uid; +-int gid; +-int mode; ++void z(char *home, char *subdir, char *file, int len, int uid, int gid, int mode) + { + int fdout; + +@@ -120,7 +98,7 @@ + fdout = open_trunc(file); + if (fdout == -1) + strerr_die6sys(111,FATAL,"unable to write .../",subdir,"/",file,": "); +- buffer_init(&ssout,buffer_unixwrite,fdout,outbuf,sizeof outbuf); ++ buffer_init(&ssout,(buffer_op)buffer_unixwrite,fdout,outbuf,sizeof outbuf); + + while (len-- > 0) + if (buffer_put(&ssout,"",1) == -1) +@@ -139,7 +117,7 @@ + strerr_die6sys(111,FATAL,"unable to chmod .../",subdir,"/",file,": "); + } + +-int main() ++int main(void) + { + fdsourcedir = open_read("."); + if (fdsourcedir == -1) +diff '--color=auto' -Nur djbdns-1.05~/instcheck.c djbdns-1.05/instcheck.c +--- djbdns-1.05~/instcheck.c 2025-12-02 21:09:06.743944191 +0100 ++++ djbdns-1.05/instcheck.c 2025-12-02 21:12:11.953941543 +0100 +@@ -10,15 +10,7 @@ + #define FATAL "instcheck: fatal: " + #define WARNING "instcheck: warning: " + +-void perm(prefix1,prefix2,prefix3,file,type,uid,gid,mode) +-char *prefix1; +-char *prefix2; +-char *prefix3; +-char *file; +-mode_t type; +-uid_t uid; +-gid_t gid; +-mode_t mode; ++void perm(char *prefix1, char *prefix2, char *prefix3, char *file, mode_t type, uid_t uid, gid_t gid, mode_t mode) + { + struct stat st; + +@@ -40,46 +32,26 @@ + strerr_warn6(WARNING,prefix1,prefix2,prefix3,file," has wrong type",0); + } + +-void h(home,uid,gid,mode) +-char *home; +-int uid; +-int gid; +-int mode; ++void h(char *home, uid_t uid, gid_t gid, mode_t mode) + { + perm("","","",home,S_IFDIR,uid,gid,mode); + } + +-void d(home,subdir,uid,gid,mode) +-char *home; +-char *subdir; +-int uid; +-int gid; +-int mode; ++void d(char *home, char *subdir, uid_t uid, gid_t gid, mode_t mode) + { + if (chdir(home) == -1) + strerr_die4sys(111,FATAL,"unable to switch to ",home,": "); + perm("",home,"/",subdir,S_IFDIR,uid,gid,mode); + } + +-void p(home,fifo,uid,gid,mode) +-char *home; +-char *fifo; +-int uid; +-int gid; +-int mode; ++void p(char *home, char *fifo, uid_t uid, gid_t gid, mode_t mode) + { + if (chdir(home) == -1) + strerr_die4sys(111,FATAL,"unable to switch to ",home,": "); + perm("",home,"/",fifo,S_IFIFO,uid,gid,mode); + } + +-void c(home,subdir,file,uid,gid,mode) +-char *home; +-char *subdir; +-char *file; +-int uid; +-int gid; +-int mode; ++void c(char *home, char *subdir, char *file, uid_t uid, gid_t gid, mode_t mode) + { + if (chdir(home) == -1) + strerr_die4sys(111,FATAL,"unable to switch to ",home,": "); +@@ -88,21 +60,15 @@ + perm(".../",subdir,"/",file,S_IFREG,uid,gid,mode); + } + +-void z(home,file,len,uid,gid,mode) +-char *home; +-char *file; +-int len; +-int uid; +-int gid; +-int mode; ++void z(char *home, char *file, int len, uid_t uid, gid_t gid, mode_t mode) + { +- (void)len; // unused ++ (void)len; /* unused */ + if (chdir(home) == -1) + strerr_die4sys(111,FATAL,"unable to switch to ",home,": "); + perm("",home,"/",file,S_IFREG,uid,gid,mode); + } + +-int main() ++int main(void) + { + hier(); + _exit(0); +diff '--color=auto' -Nur djbdns-1.05~/Makefile djbdns-1.05/Makefile +--- djbdns-1.05~/Makefile 2025-12-02 21:09:06.762721750 +0100 ++++ djbdns-1.05/Makefile 2025-12-02 21:10:22.043999095 +0100 +@@ -565,12 +565,6 @@ + *) cat hasdevtcp.h1 ;; \ + esac ) > hasdevtcp.h + +-hasshsgr.h: \ +-choose compile load tryshsgr.c hasshsgr.h1 hasshsgr.h2 chkshsgr \ +-warn-shsgr +- ./chkshsgr || ( cat warn-shsgr; exit 1 ) +- ./choose clr tryshsgr hasshsgr.h1 hasshsgr.h2 > hasshsgr.h +- + hier.o: \ + compile hier.c auto_home.h + ./compile hier.c +@@ -744,7 +738,7 @@ + dnstrace dnstracesort cachetest utime rts dnsip6 dnsip6q + + prot.o: \ +-compile prot.c hasshsgr.h prot.h ++compile prot.c prot.h + ./compile prot.c + + qlog.o: \ +diff '--color=auto' -Nur djbdns-1.05~/prot.c djbdns-1.05/prot.c +--- djbdns-1.05~/prot.c 2025-12-02 21:09:06.745062267 +0100 ++++ djbdns-1.05/prot.c 2025-12-02 21:10:22.044207564 +0100 +@@ -1,4 +1,3 @@ +-#include "hasshsgr.h" + #include "prot.h" + + #include <sys/types.h> +@@ -7,13 +6,7 @@ + + int prot_gid(gid_t gid) + { +-#ifdef HASSHORTSETGROUPS +- short x[2]; +- x[0] = gid; x[1] = 73; /* catch errors */ +- if (setgroups(1,x) == -1) return -1; +-#else + if (setgroups(1,&gid) == -1) return -1; +-#endif + return setgid(gid); /* _should_ be redundant, but on some systems it isn't */ + } + +diff '--color=auto' -Nur djbdns-1.05~/scan.h djbdns-1.05/scan.h +--- djbdns-1.05~/scan.h 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/scan.h 2025-12-02 21:10:22.044311724 +0100 +@@ -1,28 +1,9 @@ ++#include <stddef.h> ++ + #ifndef SCAN_H + #define SCAN_H + +-extern unsigned int scan_uint(const char *,unsigned int *); +-extern unsigned int scan_xint(const char *,unsigned int *); +-extern unsigned int scan_nbbint(const char *,unsigned int,unsigned int,unsigned int,unsigned int *); +-extern unsigned int scan_ushort(const char *,unsigned short *); +-extern unsigned int scan_xshort(const char *,unsigned short *); +-extern unsigned int scan_nbbshort(const char *,unsigned int,unsigned int,unsigned int,unsigned short *); +-extern unsigned int scan_ulong(const char *,unsigned long *); +-extern unsigned int scan_xlong(const char *,unsigned long *); +-extern unsigned int scan_nbblong(const char *,unsigned int,unsigned int,unsigned int,unsigned long *); +- +-extern unsigned int scan_plusminus(const char *,int *); +-extern unsigned int scan_0x(const char *,unsigned int *); +- +-extern unsigned int scan_whitenskip(const char *,unsigned int); +-extern unsigned int scan_nonwhitenskip(const char *,unsigned int); +-extern unsigned int scan_charsetnskip(const char *,const char *,unsigned int); +-extern unsigned int scan_noncharsetnskip(const char *,const char *,unsigned int); +- +-extern unsigned int scan_strncmp(const char *,const char *,unsigned int); +-extern unsigned int scan_memcmp(const char *,const char *,unsigned int); +- +-extern unsigned int scan_long(const char *,long *); +-extern unsigned int scan_8long(const char *,unsigned long *); ++extern size_t scan_ulong(const char *,unsigned long *); ++extern size_t scan_xlong(const char *,unsigned long *); + + #endif +diff '--color=auto' -Nur djbdns-1.05~/scan_ulong.c djbdns-1.05/scan_ulong.c +--- djbdns-1.05~/scan_ulong.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/scan_ulong.c 2025-12-02 21:10:22.044402229 +0100 +@@ -1,8 +1,8 @@ + #include "scan.h" + +-unsigned int scan_ulong(register const char *s,register unsigned long *u) ++size_t scan_ulong(register const char *s,register unsigned long *u) + { +- register unsigned int pos = 0; ++ register size_t pos = 0; + register unsigned long result = 0; + register unsigned long c; + while ((c = (unsigned long) (unsigned char) (s[pos] - '0')) < 10) { +diff '--color=auto' -Nur djbdns-1.05~/scan_xlong.c djbdns-1.05/scan_xlong.c +--- djbdns-1.05~/scan_xlong.c 2025-12-02 21:09:06.746043204 +0100 ++++ djbdns-1.05/scan_xlong.c 2025-12-02 21:10:22.044489688 +0100 +@@ -10,7 +10,7 @@ + return -1; + } + +-unsigned int scan_xlong(const char *src,unsigned long *dest) { ++size_t scan_xlong(const char *src,unsigned long *dest) { + register const char *tmp=src; + register int l=0; + register unsigned char c; +diff '--color=auto' -Nur djbdns-1.05~/select.h2 djbdns-1.05/select.h2 +--- djbdns-1.05~/select.h2 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/select.h2 2025-12-02 21:10:22.044575920 +0100 +@@ -6,6 +6,5 @@ + #include <sys/types.h> + #include <sys/time.h> + #include <sys/select.h> +-extern int select(); + + #endif +diff '--color=auto' -Nur djbdns-1.05~/server.c djbdns-1.05/server.c +--- djbdns-1.05~/server.c 2025-12-02 21:09:06.755861157 +0100 ++++ djbdns-1.05/server.c 2025-12-02 21:10:22.044682282 +0100 +@@ -95,7 +95,7 @@ + int *udp53; + unsigned int off; + unsigned int cnt; +- unsigned int truncate_len = 512; ++ unsigned long truncate_len = 512; + iopause_fd *iop; + + x = env_get("IP"); +diff '--color=auto' -Nur djbdns-1.05~/TARGETS djbdns-1.05/TARGETS +--- djbdns-1.05~/TARGETS 2025-12-02 21:09:06.739901550 +0100 ++++ djbdns-1.05/TARGETS 2025-12-02 21:10:22.044796408 +0100 +@@ -218,7 +218,6 @@ + it + setup + check +-scan_0x.o + fmt_xlong.o + ip6_scan.o + ip6_fmt.o +diff '--color=auto' -Nur djbdns-1.05~/timeoutread.c djbdns-1.05/timeoutread.c +--- djbdns-1.05~/timeoutread.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/timeoutread.c 2025-12-02 21:10:22.044885544 +0100 +@@ -3,7 +3,7 @@ + #include "iopause.h" + #include "timeoutread.h" + +-int timeoutread(int t,int fd,char *buf,int len) ++ssize_t timeoutread(int t,int fd,char *buf,size_t len) + { + struct taia now; + struct taia deadline; +diff '--color=auto' -Nur djbdns-1.05~/timeoutread.h djbdns-1.05/timeoutread.h +--- djbdns-1.05~/timeoutread.h 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/timeoutread.h 2025-12-02 21:10:22.044971349 +0100 +@@ -1,6 +1,6 @@ + #ifndef TIMEOUTREAD_H + #define TIMEOUTREAD_H + +-extern int timeoutread(); ++extern ssize_t timeoutread(int, int, char *, size_t); + + #endif +diff '--color=auto' -Nur djbdns-1.05~/timeoutwrite.c djbdns-1.05/timeoutwrite.c +--- djbdns-1.05~/timeoutwrite.c 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/timeoutwrite.c 2025-12-02 21:10:22.045059788 +0100 +@@ -3,7 +3,7 @@ + #include "iopause.h" + #include "timeoutwrite.h" + +-int timeoutwrite(int t,int fd,char *buf,int len) ++ssize_t timeoutwrite(int t, int fd, const char *buf, size_t len) + { + struct taia now; + struct taia deadline; +diff '--color=auto' -Nur djbdns-1.05~/timeoutwrite.h djbdns-1.05/timeoutwrite.h +--- djbdns-1.05~/timeoutwrite.h 2001-02-11 22:11:45.000000000 +0100 ++++ djbdns-1.05/timeoutwrite.h 2025-12-02 21:10:22.045145217 +0100 +@@ -1,6 +1,6 @@ + #ifndef TIMEOUTWRITE_H + #define TIMEOUTWRITE_H + +-extern int timeoutwrite(); ++extern ssize_t timeoutwrite(int, int, const char *, size_t); + + #endif +diff '--color=auto' -Nur djbdns-1.05~/tinydns-data.c djbdns-1.05/tinydns-data.c +--- djbdns-1.05~/tinydns-data.c 2025-12-02 21:09:06.747461059 +0100 ++++ djbdns-1.05/tinydns-data.c 2025-12-02 21:10:22.045281915 +0100 +@@ -432,13 +432,13 @@ + if (!dns_domain_fromdot(&d2,f[2].s,f[2].len)) nomem(); + + if (!stralloc_0(&f[4])) nomem(); +- if (!scan_ulong(f[4].s,&u)) u = 0; ++ if (!scan_u32(f[4].s,&u)) u = 0; + uint16_pack_big(srv,u); + if (!stralloc_0(&f[5])) nomem(); +- if (!scan_ulong(f[5].s,&u)) u = 0; ++ if (!scan_u32(f[5].s,&u)) u = 0; + uint16_pack_big(srv + 2,u); + if (!stralloc_0(&f[3])) nomem(); +- if (!scan_ulong(f[3].s,&u)) nomem(); ++ if (!scan_u32(f[3].s,&u)) nomem(); + uint16_pack_big(srv + 4,u); + + rr_start(DNS_T_SRV,ttl,ttd,loc); +diff '--color=auto' -Nur djbdns-1.05~/tinydns-edit.c djbdns-1.05/tinydns-edit.c +--- djbdns-1.05~/tinydns-edit.c 2025-12-02 21:09:06.747563376 +0100 ++++ djbdns-1.05/tinydns-edit.c 2025-12-02 21:10:22.045429088 +0100 +@@ -129,7 +129,7 @@ + fdnew = open_trunc(fnnew); + if (fdnew == -1) die_write(); + if (fchmod(fdnew,st.st_mode & 0644) == -1) die_write(); +- buffer_init(&bnew,buffer_unixwrite,fdnew,bnewspace,sizeof bnewspace); ++ buffer_init(&bnew,(buffer_op)buffer_unixwrite,fdnew,bnewspace,sizeof bnewspace); + + switch(mode) { + case '.': case '&': +diff '--color=auto' -Nur djbdns-1.05~/tryshsgr.c djbdns-1.05/tryshsgr.c +--- djbdns-1.05~/tryshsgr.c 2025-12-02 21:09:06.747843586 +0100 ++++ djbdns-1.05/tryshsgr.c 1970-01-01 01:00:00.000000000 +0100 +@@ -1,18 +0,0 @@ +-#include <sys/types.h> +-#include <unistd.h> +-#include <grp.h> +- +-int main() +-{ +- gid_t x[4]; +- +- x[0] = x[1] = 1; +- if (getgroups(1,x) == 0) if (setgroups(1,x) == -1) _exit(1); +- +- if (getgroups(1,x) == -1) _exit(1); +- if (x[1] != 1) _exit(1); +- x[1] = 2; +- if (getgroups(1,x) == -1) _exit(1); +- if (x[1] != 2) _exit(1); +- _exit(0); +-}
