From bb8087edd206e9563d81115a39a927c36e9c1df7 Mon Sep 17 00:00:00 2001 From: Michael Forney Date: Tue, 19 May 2020 14:09:57 -0700 Subject: openbsd: Update to 6.7 --- ...ix-GNU-long-name-handling-with-short-read.patch | 20 +- ...12-pax-Support-xz-compression-with-J-flag.patch | 8 +- .../patch/0016-doas-Port-to-linux-musl.patch | 20 +- ...0029-Include-sys-sysmacros.h-if-necessary.patch | 73 ++++ ...-Prevent-duplicate-definitions-of-global-.patch | 56 --- ...0030-Include-sys-sysmacros.h-if-necessary.patch | 73 ---- ...-Portability-fixes-from-libressl-portable.patch | 194 ++++++++++ ...-Portability-fixes-from-libressl-portable.patch | 194 ---------- .../0031-pax-Ignore-EOPNOTSUPP-from-fchmodat.patch | 26 ++ ...-client-Fix-build-with-old-bison-versions.patch | 24 ++ .../0032-pax-Ignore-EOPNOTSUPP-from-fchmodat.patch | 26 -- ...-client-Fix-build-with-old-bison-versions.patch | 24 -- .../0033-rsync-Add-implementation-of-MD4.patch | 414 +++++++++++++++++++++ .../0034-rsync-Add-implementation-of-MD4.patch | 414 --------------------- pkg/openbsd/sha256 | 4 +- pkg/openbsd/url | 4 +- pkg/openbsd/ver | 2 +- 17 files changed, 760 insertions(+), 816 deletions(-) create mode 100644 pkg/openbsd/patch/0029-Include-sys-sysmacros.h-if-necessary.patch delete mode 100644 pkg/openbsd/patch/0029-acme-client-Prevent-duplicate-definitions-of-global-.patch delete mode 100644 pkg/openbsd/patch/0030-Include-sys-sysmacros.h-if-necessary.patch create mode 100644 pkg/openbsd/patch/0030-nc-Portability-fixes-from-libressl-portable.patch delete mode 100644 pkg/openbsd/patch/0031-nc-Portability-fixes-from-libressl-portable.patch create mode 100644 pkg/openbsd/patch/0031-pax-Ignore-EOPNOTSUPP-from-fchmodat.patch create mode 100644 pkg/openbsd/patch/0032-acme-client-Fix-build-with-old-bison-versions.patch delete mode 100644 pkg/openbsd/patch/0032-pax-Ignore-EOPNOTSUPP-from-fchmodat.patch delete mode 100644 pkg/openbsd/patch/0033-acme-client-Fix-build-with-old-bison-versions.patch create mode 100644 pkg/openbsd/patch/0033-rsync-Add-implementation-of-MD4.patch delete mode 100644 pkg/openbsd/patch/0034-rsync-Add-implementation-of-MD4.patch (limited to 'pkg') diff --git a/pkg/openbsd/patch/0011-pax-Fix-GNU-long-name-handling-with-short-read.patch b/pkg/openbsd/patch/0011-pax-Fix-GNU-long-name-handling-with-short-read.patch index 9cd4120c..b88aa2b8 100644 --- a/pkg/openbsd/patch/0011-pax-Fix-GNU-long-name-handling-with-short-read.patch +++ b/pkg/openbsd/patch/0011-pax-Fix-GNU-long-name-handling-with-short-read.patch @@ -1,16 +1,16 @@ -From fdfd554d5e24850f7ebbc67798c893c4ec6b7506 Mon Sep 17 00:00:00 2001 +From ec3fd37495e977af375a98a472d19ae0ccbcd874 Mon Sep 17 00:00:00 2001 From: Michael Forney Date: Sat, 3 Dec 2016 20:49:24 -0800 Subject: [PATCH] pax: Fix GNU long name handling with short read --- - bin/pax/ar_subs.c | 66 +++++++++++++++++++++++++++++++++++++++-------------- - bin/pax/buf_subs.c | 4 +--- - bin/pax/file_subs.c | 25 +------------------- + bin/pax/ar_subs.c | 66 +++++++++++++++++++++++++++++++++------------ + bin/pax/buf_subs.c | 4 +-- + bin/pax/file_subs.c | 25 +---------------- 3 files changed, 51 insertions(+), 44 deletions(-) diff --git a/bin/pax/ar_subs.c b/bin/pax/ar_subs.c -index f70ec4ed0..222bfafa5 100644 +index e5b0a4ee5d1..f0a55abe2f7 100644 --- a/bin/pax/ar_subs.c +++ b/bin/pax/ar_subs.c @@ -37,6 +37,7 @@ @@ -114,7 +114,7 @@ index f70ec4ed0..222bfafa5 100644 + return 1; +} diff --git a/bin/pax/buf_subs.c b/bin/pax/buf_subs.c -index 30be3dc46..6a9594918 100644 +index 68534dcbe25..e84f9e0d3d6 100644 --- a/bin/pax/buf_subs.c +++ b/bin/pax/buf_subs.c @@ -673,9 +673,7 @@ rd_wrfile(ARCHD *arcn, int ofd, off_t *left) @@ -129,10 +129,10 @@ index 30be3dc46..6a9594918 100644 sz = (int)sb.st_blksize; } else diff --git a/bin/pax/file_subs.c b/bin/pax/file_subs.c -index 57ebdb490..1a8f58d57 100644 +index 89b4872988b..8aa3d249923 100644 --- a/bin/pax/file_subs.c +++ b/bin/pax/file_subs.c -@@ -917,7 +917,6 @@ file_write(int fd, char *str, int cnt, int *rem, int *isempt, int sz, +@@ -919,7 +919,6 @@ file_write(int fd, char *str, int cnt, int *rem, int *isempt, int sz, char *end; int wcnt; char *st = str; @@ -140,7 +140,7 @@ index 57ebdb490..1a8f58d57 100644 /* * while we have data to process -@@ -976,29 +975,7 @@ file_write(int fd, char *str, int cnt, int *rem, int *isempt, int sz, +@@ -978,29 +977,7 @@ file_write(int fd, char *str, int cnt, int *rem, int *isempt, int sz, /* * have non-zero data in this file system block, have to write */ @@ -172,5 +172,5 @@ index 57ebdb490..1a8f58d57 100644 return(-1); } -- -2.12.2 +2.26.2 diff --git a/pkg/openbsd/patch/0012-pax-Support-xz-compression-with-J-flag.patch b/pkg/openbsd/patch/0012-pax-Support-xz-compression-with-J-flag.patch index cd9034cc..00f8a8b9 100644 --- a/pkg/openbsd/patch/0012-pax-Support-xz-compression-with-J-flag.patch +++ b/pkg/openbsd/patch/0012-pax-Support-xz-compression-with-J-flag.patch @@ -1,4 +1,4 @@ -From d3515f559d148e217f2a8799fd1e3db63dd817ad Mon Sep 17 00:00:00 2001 +From ac4a17dd01df3889bac917b0dc34ba9fd15aa7fe Mon Sep 17 00:00:00 2001 From: Michael Forney Date: Sat, 3 Dec 2016 23:50:27 -0800 Subject: [PATCH] pax: Support xz compression with -J flag @@ -8,7 +8,7 @@ Subject: [PATCH] pax: Support xz compression with -J flag 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/bin/pax/options.c b/bin/pax/options.c -index 022c59664..c2d046d07 100644 +index c7e64a5d22c..917414c999a 100644 --- a/bin/pax/options.c +++ b/bin/pax/options.c @@ -154,6 +154,7 @@ static int xz_id(char *_blk, int _size); @@ -72,7 +72,7 @@ index 022c59664..c2d046d07 100644 switch (c) { case 'a': /* -@@ -1347,6 +1360,12 @@ cpio_options(int argc, char **argv) +@@ -1348,6 +1361,12 @@ cpio_options(int argc, char **argv) (void)fputs("\n\n", stderr); cpio_usage(); break; @@ -86,5 +86,5 @@ index 022c59664..c2d046d07 100644 /* * follow symbolic links -- -2.12.2 +2.26.2 diff --git a/pkg/openbsd/patch/0016-doas-Port-to-linux-musl.patch b/pkg/openbsd/patch/0016-doas-Port-to-linux-musl.patch index 3db9f3da..fa76ca7c 100644 --- a/pkg/openbsd/patch/0016-doas-Port-to-linux-musl.patch +++ b/pkg/openbsd/patch/0016-doas-Port-to-linux-musl.patch @@ -1,4 +1,4 @@ -From a9958b98fd7e746f4da6df5b8e89507a5ac85dab Mon Sep 17 00:00:00 2001 +From 5dd6a34aacb8c4248823f708f68201ba06ec6c25 Mon Sep 17 00:00:00 2001 From: Michael Forney Date: Sun, 26 Feb 2017 16:50:55 -0800 Subject: [PATCH] doas: Port to linux/musl @@ -57,7 +57,7 @@ index fc769bdb336..c7196e347a9 100644 Parse and check the configuration file .Ar config , diff --git a/usr.bin/doas/doas.c b/usr.bin/doas/doas.c -index dfd8c8603bf..b2180a5f0e0 100644 +index a723c67a3eb..e7e3e639401 100644 --- a/usr.bin/doas/doas.c +++ b/usr.bin/doas/doas.c @@ -20,8 +20,6 @@ @@ -93,7 +93,7 @@ index dfd8c8603bf..b2180a5f0e0 100644 " command [args]\n"); exit(1); } -@@ -193,23 +200,36 @@ checkconfig(const char *confpath, int argc, char **argv, +@@ -197,23 +204,36 @@ checkconfig(const char *confpath, int argc, char **argv, } } @@ -140,7 +140,7 @@ index dfd8c8603bf..b2180a5f0e0 100644 if (!challenge) { char host[HOST_NAME_MAX + 1]; if (gethostname(host, sizeof(host))) -@@ -221,21 +241,18 @@ authuser(char *myname, char *login_style, int persist) +@@ -225,21 +245,18 @@ authuser(char *myname, char *login_style, int persist) response = readpassphrase(challenge, rbuf, sizeof(rbuf), RPP_REQUIRE_TTY); if (response == NULL && errno == ENOTTY) { @@ -166,7 +166,7 @@ index dfd8c8603bf..b2180a5f0e0 100644 close(fd); } } -@@ -281,15 +298,14 @@ done: +@@ -285,15 +302,14 @@ done: int main(int argc, char **argv) { @@ -184,7 +184,7 @@ index dfd8c8603bf..b2180a5f0e0 100644 struct passwd mypwstore, targpwstore; struct passwd *mypw, *targpw; const struct rule *rule; -@@ -302,28 +318,20 @@ main(int argc, char **argv) +@@ -306,28 +322,20 @@ main(int argc, char **argv) int nflag = 0; char cwdpath[PATH_MAX]; const char *cwd; @@ -216,7 +216,7 @@ index dfd8c8603bf..b2180a5f0e0 100644 case 'u': if (parseuid(optarg, &target) != 0) errx(1, "unknown user"); -@@ -391,16 +399,16 @@ main(int argc, char **argv) +@@ -395,16 +403,16 @@ main(int argc, char **argv) cmd = argv[0]; if (!permit(uid, groups, ngroups, &rule, target, cmd, (const char **)argv + 1)) { @@ -237,7 +237,7 @@ index dfd8c8603bf..b2180a5f0e0 100644 } if ((p = getenv("PATH")) != NULL) -@@ -427,11 +435,12 @@ main(int argc, char **argv) +@@ -431,11 +439,12 @@ main(int argc, char **argv) if (targpw == NULL) errx(1, "no passwd entry for target"); @@ -255,7 +255,7 @@ index dfd8c8603bf..b2180a5f0e0 100644 if (pledge("stdio rpath exec", NULL) == -1) err(1, "pledge"); -@@ -444,7 +453,7 @@ main(int argc, char **argv) +@@ -448,7 +457,7 @@ main(int argc, char **argv) if (pledge("stdio exec", NULL) == -1) err(1, "pledge"); @@ -431,5 +431,5 @@ index 00000000000..41fa747458b + return 0; +} -- -2.23.0 +2.26.2 diff --git a/pkg/openbsd/patch/0029-Include-sys-sysmacros.h-if-necessary.patch b/pkg/openbsd/patch/0029-Include-sys-sysmacros.h-if-necessary.patch new file mode 100644 index 00000000..6b64a048 --- /dev/null +++ b/pkg/openbsd/patch/0029-Include-sys-sysmacros.h-if-necessary.patch @@ -0,0 +1,73 @@ +From a8d547a2cf005a00a111394464fc2692f426ceed Mon Sep 17 00:00:00 2001 +From: Michael Forney +Date: Mon, 5 Aug 2019 21:42:54 -0700 +Subject: [PATCH] Include sys/sysmacros.h if necessary + +--- + bin/pax/cpio.c | 4 ++++ + bin/pax/gen_subs.c | 3 +++ + bin/pax/tar.c | 3 +++ + usr.bin/rsync/flist.c | 4 ++++ + 4 files changed, 14 insertions(+) + +diff --git a/bin/pax/cpio.c b/bin/pax/cpio.c +index 92fe965163a..3832b1e87aa 100644 +--- a/bin/pax/cpio.c ++++ b/bin/pax/cpio.c +@@ -41,6 +41,10 @@ + #include + #include + #include ++#ifndef major ++#include ++#endif ++ + #include "pax.h" + #include "cpio.h" + #include "extern.h" +diff --git a/bin/pax/gen_subs.c b/bin/pax/gen_subs.c +index 42c70804fb7..405dd2c24ed 100644 +--- a/bin/pax/gen_subs.c ++++ b/bin/pax/gen_subs.c +@@ -45,6 +45,9 @@ + #include + #include + #include ++#ifndef major ++#include ++#endif + + #include "pax.h" + #include "extern.h" +diff --git a/bin/pax/tar.c b/bin/pax/tar.c +index a49a5e885fb..3bfa9444dd5 100644 +--- a/bin/pax/tar.c ++++ b/bin/pax/tar.c +@@ -45,6 +45,9 @@ + #include + #include + #include ++#ifndef major ++#include ++#endif + + #include "pax.h" + #include "extern.h" +diff --git a/usr.bin/rsync/flist.c b/usr.bin/rsync/flist.c +index ac29ad47098..9680883ca77 100644 +--- a/usr.bin/rsync/flist.c ++++ b/usr.bin/rsync/flist.c +@@ -17,6 +17,10 @@ + */ + #include + #include ++#include ++#ifndef major ++#include ++#endif + + #include + #include +-- +2.22.0 + diff --git a/pkg/openbsd/patch/0029-acme-client-Prevent-duplicate-definitions-of-global-.patch b/pkg/openbsd/patch/0029-acme-client-Prevent-duplicate-definitions-of-global-.patch deleted file mode 100644 index 8c6d53d3..00000000 --- a/pkg/openbsd/patch/0029-acme-client-Prevent-duplicate-definitions-of-global-.patch +++ /dev/null @@ -1,56 +0,0 @@ -From e4144832450feeb8cdf4baa310f0540b9b6d4f7c Mon Sep 17 00:00:00 2001 -From: Michael Forney -Date: Sat, 15 Jun 2019 20:20:36 -0700 -Subject: [PATCH] acme-client: Prevent duplicate definitions of global - variables - ---- - usr.sbin/acme-client/extern.h | 4 ++-- - usr.sbin/acme-client/main.c | 5 +++-- - 2 files changed, 5 insertions(+), 4 deletions(-) - -diff --git a/usr.sbin/acme-client/extern.h b/usr.sbin/acme-client/extern.h -index 85a844f77f3..9ec48a08c4c 100644 ---- a/usr.sbin/acme-client/extern.h -+++ b/usr.sbin/acme-client/extern.h -@@ -279,12 +279,12 @@ char *json_fmt_signed(const char *, const char *, const char *); - /* - * Should we print debugging messages? - */ --int verbose; -+extern int verbose; - - /* - * What component is the process within (COMP__MAX for none)? - */ --enum comp proccomp; -+extern enum comp proccomp; - - __END_DECLS - -diff --git a/usr.sbin/acme-client/main.c b/usr.sbin/acme-client/main.c -index 7cbeeb7de03..1f59e6c755d 100644 ---- a/usr.sbin/acme-client/main.c -+++ b/usr.sbin/acme-client/main.c -@@ -32,6 +32,9 @@ - #define WWW_DIR "/var/www/acme" - #define CONF_FILE "/etc/acme-client.conf" - -+int verbose; -+enum comp proccomp; -+ - int - main(int argc, char *argv[]) - { -@@ -46,8 +49,6 @@ main(int argc, char *argv[]) - int c, rc, revocate = 0; - int popts = 0; - pid_t pids[COMP__MAX]; -- extern int verbose; -- extern enum comp proccomp; - size_t i, altsz, ne; - - struct acme_conf *conf = NULL; --- -2.23.0 - diff --git a/pkg/openbsd/patch/0030-Include-sys-sysmacros.h-if-necessary.patch b/pkg/openbsd/patch/0030-Include-sys-sysmacros.h-if-necessary.patch deleted file mode 100644 index 6b64a048..00000000 --- a/pkg/openbsd/patch/0030-Include-sys-sysmacros.h-if-necessary.patch +++ /dev/null @@ -1,73 +0,0 @@ -From a8d547a2cf005a00a111394464fc2692f426ceed Mon Sep 17 00:00:00 2001 -From: Michael Forney -Date: Mon, 5 Aug 2019 21:42:54 -0700 -Subject: [PATCH] Include sys/sysmacros.h if necessary - ---- - bin/pax/cpio.c | 4 ++++ - bin/pax/gen_subs.c | 3 +++ - bin/pax/tar.c | 3 +++ - usr.bin/rsync/flist.c | 4 ++++ - 4 files changed, 14 insertions(+) - -diff --git a/bin/pax/cpio.c b/bin/pax/cpio.c -index 92fe965163a..3832b1e87aa 100644 ---- a/bin/pax/cpio.c -+++ b/bin/pax/cpio.c -@@ -41,6 +41,10 @@ - #include - #include - #include -+#ifndef major -+#include -+#endif -+ - #include "pax.h" - #include "cpio.h" - #include "extern.h" -diff --git a/bin/pax/gen_subs.c b/bin/pax/gen_subs.c -index 42c70804fb7..405dd2c24ed 100644 ---- a/bin/pax/gen_subs.c -+++ b/bin/pax/gen_subs.c -@@ -45,6 +45,9 @@ - #include - #include - #include -+#ifndef major -+#include -+#endif - - #include "pax.h" - #include "extern.h" -diff --git a/bin/pax/tar.c b/bin/pax/tar.c -index a49a5e885fb..3bfa9444dd5 100644 ---- a/bin/pax/tar.c -+++ b/bin/pax/tar.c -@@ -45,6 +45,9 @@ - #include - #include - #include -+#ifndef major -+#include -+#endif - - #include "pax.h" - #include "extern.h" -diff --git a/usr.bin/rsync/flist.c b/usr.bin/rsync/flist.c -index ac29ad47098..9680883ca77 100644 ---- a/usr.bin/rsync/flist.c -+++ b/usr.bin/rsync/flist.c -@@ -17,6 +17,10 @@ - */ - #include - #include -+#include -+#ifndef major -+#include -+#endif - - #include - #include --- -2.22.0 - diff --git a/pkg/openbsd/patch/0030-nc-Portability-fixes-from-libressl-portable.patch b/pkg/openbsd/patch/0030-nc-Portability-fixes-from-libressl-portable.patch new file mode 100644 index 00000000..2c3cb23d --- /dev/null +++ b/pkg/openbsd/patch/0030-nc-Portability-fixes-from-libressl-portable.patch @@ -0,0 +1,194 @@ +From 074f2b35512b16c9644c8bd878fa9ace208c17a6 Mon Sep 17 00:00:00 2001 +From: Michael Forney +Date: Mon, 2 Dec 2019 21:11:04 -0800 +Subject: [PATCH] nc: Portability fixes from libressl-portable + +--- + usr.bin/nc/netcat.c | 55 +++++++++++++++++++++++++++++++++++++++------ + 1 file changed, 48 insertions(+), 7 deletions(-) + +diff --git a/usr.bin/nc/netcat.c b/usr.bin/nc/netcat.c +index 503095584ad..f052766213e 100644 +--- a/usr.bin/nc/netcat.c ++++ b/usr.bin/nc/netcat.c +@@ -93,9 +93,13 @@ int zflag; /* Port Scan Flag */ + int Dflag; /* sodebug */ + int Iflag; /* TCP receive buffer size */ + int Oflag; /* TCP send buffer size */ ++#ifdef TCP_MD5SIG + int Sflag; /* TCP MD5 signature option */ ++#endif + int Tflag = -1; /* IP Type of Service */ ++#ifdef SO_RTABLE + int rtableid = -1; ++#endif + + int usetls; /* use TLS */ + const char *Cflag; /* Public cert file */ +@@ -269,12 +273,14 @@ main(int argc, char *argv[]) + case 'u': + uflag = 1; + break; ++#ifdef SO_RTABLE + case 'V': + rtableid = (int)strtonum(optarg, 0, + RT_TABLEID_MAX, &errstr); + if (errstr) + errx(1, "rtable %s: %s", errstr, optarg); + break; ++#endif + case 'v': + vflag = 1; + break; +@@ -321,9 +327,11 @@ main(int argc, char *argv[]) + case 'o': + oflag = optarg; + break; ++#ifdef TCP_MD5SIG + case 'S': + Sflag = 1; + break; ++#endif + case 'T': + errstr = NULL; + errno = 0; +@@ -347,9 +355,11 @@ main(int argc, char *argv[]) + argc -= optind; + argv += optind; + ++#ifdef SO_RTABLE + if (rtableid >= 0) + if (setrtable(rtableid) == -1) + err(1, "setrtable"); ++#endif + + /* Cruft to make sure options are clean, and used properly. */ + if (argc == 1 && family == AF_UNIX) { +@@ -947,7 +957,10 @@ remote_connect(const char *host, const char *port, struct addrinfo hints, + char *ipaddr) + { + struct addrinfo *res, *res0; +- int s = -1, error, herr, on = 1, save_errno; ++ int s = -1, error, herr, save_errno; ++#ifdef SO_BINDANY ++ int on = 1; ++#endif + + if ((error = getaddrinfo(host, port, &hints, &res0))) + errx(1, "getaddrinfo for host \"%s\" port %s: %s", host, +@@ -962,8 +975,10 @@ remote_connect(const char *host, const char *port, struct addrinfo hints, + if (sflag || pflag) { + struct addrinfo ahints, *ares; + ++#ifdef SO_BINDANY + /* try SO_BINDANY, but don't insist */ + setsockopt(s, SOL_SOCKET, SO_BINDANY, &on, sizeof(on)); ++#endif + memset(&ahints, 0, sizeof(struct addrinfo)); + ahints.ai_family = res->ai_family; + ahints.ai_socktype = uflag ? SOCK_DGRAM : SOCK_STREAM; +@@ -1055,8 +1070,11 @@ int + local_listen(const char *host, const char *port, struct addrinfo hints) + { + struct addrinfo *res, *res0; +- int s = -1, ret, x = 1, save_errno; ++ int s = -1, save_errno; + int error; ++#ifdef SO_REUSEPORT ++ int ret, x = 1; ++#endif + + /* Allow nodename to be null. */ + hints.ai_flags |= AI_PASSIVE; +@@ -1076,9 +1094,11 @@ local_listen(const char *host, const char *port, struct addrinfo hints) + res->ai_protocol)) == -1) + continue; + ++#ifdef SO_REUSEPORT + ret = setsockopt(s, SOL_SOCKET, SO_REUSEPORT, &x, sizeof(x)); + if (ret == -1) + err(1, NULL); ++#endif + + set_common_sockopts(s, res->ai_family); + +@@ -1548,11 +1568,13 @@ set_common_sockopts(int s, int af) + { + int x = 1; + ++#ifdef TCP_MD5SIG + if (Sflag) { + if (setsockopt(s, IPPROTO_TCP, TCP_MD5SIG, + &x, sizeof(x)) == -1) + err(1, NULL); + } ++#endif + if (Dflag) { + if (setsockopt(s, SOL_SOCKET, SO_DEBUG, + &x, sizeof(x)) == -1) +@@ -1563,9 +1585,16 @@ set_common_sockopts(int s, int af) + IP_TOS, &Tflag, sizeof(Tflag)) == -1) + err(1, "set IP ToS"); + ++#ifdef IPV6_TCLASS + else if (af == AF_INET6 && setsockopt(s, IPPROTO_IPV6, + IPV6_TCLASS, &Tflag, sizeof(Tflag)) == -1) + err(1, "set IPv6 traffic class"); ++#else ++ else if (af == AF_INET6) { ++ errno = ENOPROTOOPT; ++ err(1, "set IPv6 traffic class not supported"); ++ } ++#endif + } + if (Iflag) { + if (setsockopt(s, SOL_SOCKET, SO_RCVBUF, +@@ -1589,13 +1618,17 @@ set_common_sockopts(int s, int af) + } + + if (minttl != -1) { ++#ifdef IP_MINTTL + if (af == AF_INET && setsockopt(s, IPPROTO_IP, + IP_MINTTL, &minttl, sizeof(minttl))) + err(1, "set IP min TTL"); ++#endif + +- else if (af == AF_INET6 && setsockopt(s, IPPROTO_IPV6, ++#ifdef IPV6_MINHOPCOUNT ++ if (af == AF_INET6 && setsockopt(s, IPPROTO_IPV6, + IPV6_MINHOPCOUNT, &minttl, sizeof(minttl))) + err(1, "set IPv6 min hop count"); ++#endif + } + } + +@@ -1820,14 +1853,22 @@ help(void) + \t-P proxyuser\tUsername for proxy authentication\n\ + \t-p port\t Specify local port for remote connects\n\ + \t-R CAfile CA bundle\n\ +- \t-r Randomize remote ports\n\ +- \t-S Enable the TCP MD5 signature option\n\ ++ \t-r Randomize remote ports\n" ++#ifdef TCP_MD5SIG ++ "\ ++ \t-S Enable the TCP MD5 signature option\n" ++#endif ++ "\ + \t-s sourceaddr Local source address\n\ + \t-T keyword TOS value or TLS options\n\ + \t-t Answer TELNET negotiation\n\ + \t-U Use UNIX domain socket\n\ +- \t-u UDP mode\n\ +- \t-V rtable Specify alternate routing table\n\ ++ \t-u UDP mode\n" ++#ifdef SO_RTABLE ++ "\ ++ \t-V rtable Specify alternate routing table\n" ++#endif ++ "\ + \t-v Verbose\n\ + \t-W recvlimit Terminate after receiving a number of packets\n\ + \t-w timeout Timeout for connects and final net reads\n\ +-- +2.26.2 + diff --git a/pkg/openbsd/patch/0031-nc-Portability-fixes-from-libressl-portable.patch b/pkg/openbsd/patch/0031-nc-Portability-fixes-from-libressl-portable.patch deleted file mode 100644 index 45d2e4af..00000000 --- a/pkg/openbsd/patch/0031-nc-Portability-fixes-from-libressl-portable.patch +++ /dev/null @@ -1,194 +0,0 @@ -From b1277303a902a8fffe4adb9bff8807800353280c Mon Sep 17 00:00:00 2001 -From: Michael Forney -Date: Mon, 2 Dec 2019 21:11:04 -0800 -Subject: [PATCH] nc: Portability fixes from libressl-portable - ---- - usr.bin/nc/netcat.c | 55 +++++++++++++++++++++++++++++++++++++++------ - 1 file changed, 48 insertions(+), 7 deletions(-) - -diff --git a/usr.bin/nc/netcat.c b/usr.bin/nc/netcat.c -index c04298f64c3..2509421093b 100644 ---- a/usr.bin/nc/netcat.c -+++ b/usr.bin/nc/netcat.c -@@ -93,9 +93,13 @@ int zflag; /* Port Scan Flag */ - int Dflag; /* sodebug */ - int Iflag; /* TCP receive buffer size */ - int Oflag; /* TCP send buffer size */ -+#ifdef TCP_MD5SIG - int Sflag; /* TCP MD5 signature option */ -+#endif - int Tflag = -1; /* IP Type of Service */ -+#ifdef SO_RTABLE - int rtableid = -1; -+#endif - - int usetls; /* use TLS */ - const char *Cflag; /* Public cert file */ -@@ -268,12 +272,14 @@ main(int argc, char *argv[]) - case 'u': - uflag = 1; - break; -+#ifdef SO_RTABLE - case 'V': - rtableid = (int)strtonum(optarg, 0, - RT_TABLEID_MAX, &errstr); - if (errstr) - errx(1, "rtable %s: %s", errstr, optarg); - break; -+#endif - case 'v': - vflag = 1; - break; -@@ -320,9 +326,11 @@ main(int argc, char *argv[]) - case 'o': - oflag = optarg; - break; -+#ifdef TCP_MD5SIG - case 'S': - Sflag = 1; - break; -+#endif - case 'T': - errstr = NULL; - errno = 0; -@@ -346,9 +354,11 @@ main(int argc, char *argv[]) - argc -= optind; - argv += optind; - -+#ifdef SO_RTABLE - if (rtableid >= 0) - if (setrtable(rtableid) == -1) - err(1, "setrtable"); -+#endif - - /* Cruft to make sure options are clean, and used properly. */ - if (argv[0] && !argv[1] && family == AF_UNIX) { -@@ -919,7 +929,10 @@ int - remote_connect(const char *host, const char *port, struct addrinfo hints) - { - struct addrinfo *res, *res0; -- int s = -1, error, on = 1, save_errno; -+ int s = -1, error, save_errno; -+#ifdef SO_BINDANY -+ int on = 1; -+#endif - - if ((error = getaddrinfo(host, port, &hints, &res0))) - errx(1, "getaddrinfo for host \"%s\" port %s: %s", host, -@@ -934,8 +947,10 @@ remote_connect(const char *host, const char *port, struct addrinfo hints) - if (sflag || pflag) { - struct addrinfo ahints, *ares; - -+#ifdef SO_BINDANY - /* try SO_BINDANY, but don't insist */ - setsockopt(s, SOL_SOCKET, SO_BINDANY, &on, sizeof(on)); -+#endif - memset(&ahints, 0, sizeof(struct addrinfo)); - ahints.ai_family = res->ai_family; - ahints.ai_socktype = uflag ? SOCK_DGRAM : SOCK_STREAM; -@@ -1006,8 +1021,11 @@ int - local_listen(const char *host, const char *port, struct addrinfo hints) - { - struct addrinfo *res, *res0; -- int s = -1, ret, x = 1, save_errno; -+ int s = -1, save_errno; - int error; -+#ifdef SO_REUSEPORT -+ int ret, x = 1; -+#endif - - /* Allow nodename to be null. */ - hints.ai_flags |= AI_PASSIVE; -@@ -1027,9 +1045,11 @@ local_listen(const char *host, const char *port, struct addrinfo hints) - res->ai_protocol)) == -1) - continue; - -+#ifdef SO_REUSEPORT - ret = setsockopt(s, SOL_SOCKET, SO_REUSEPORT, &x, sizeof(x)); - if (ret == -1) - err(1, NULL); -+#endif - - set_common_sockopts(s, res->ai_family); - -@@ -1499,11 +1519,13 @@ set_common_sockopts(int s, int af) - { - int x = 1; - -+#ifdef TCP_MD5SIG - if (Sflag) { - if (setsockopt(s, IPPROTO_TCP, TCP_MD5SIG, - &x, sizeof(x)) == -1) - err(1, NULL); - } -+#endif - if (Dflag) { - if (setsockopt(s, SOL_SOCKET, SO_DEBUG, - &x, sizeof(x)) == -1) -@@ -1514,9 +1536,16 @@ set_common_sockopts(int s, int af) - IP_TOS, &Tflag, sizeof(Tflag)) == -1) - err(1, "set IP ToS"); - -+#ifdef IPV6_TCLASS - else if (af == AF_INET6 && setsockopt(s, IPPROTO_IPV6, - IPV6_TCLASS, &Tflag, sizeof(Tflag)) == -1) - err(1, "set IPv6 traffic class"); -+#else -+ else if (af == AF_INET6) { -+ errno = ENOPROTOOPT; -+ err(1, "set IPv6 traffic class not supported"); -+ } -+#endif - } - if (Iflag) { - if (setsockopt(s, SOL_SOCKET, SO_RCVBUF, -@@ -1540,13 +1569,17 @@ set_common_sockopts(int s, int af) - } - - if (minttl != -1) { -+#ifdef IP_MINTTL - if (af == AF_INET && setsockopt(s, IPPROTO_IP, - IP_MINTTL, &minttl, sizeof(minttl))) - err(1, "set IP min TTL"); -+#endif - -- else if (af == AF_INET6 && setsockopt(s, IPPROTO_IPV6, -+#ifdef IPV6_MINHOPCOUNT -+ if (af == AF_INET6 && setsockopt(s, IPPROTO_IPV6, - IPV6_MINHOPCOUNT, &minttl, sizeof(minttl))) - err(1, "set IPv6 min hop count"); -+#endif - } - } - -@@ -1768,14 +1801,22 @@ help(void) - \t-P proxyuser\tUsername for proxy authentication\n\ - \t-p port\t Specify local port for remote connects\n\ - \t-R CAfile CA bundle\n\ -- \t-r Randomize remote ports\n\ -- \t-S Enable the TCP MD5 signature option\n\ -+ \t-r Randomize remote ports\n" -+#ifdef TCP_MD5SIG -+ "\ -+ \t-S Enable the TCP MD5 signature option\n" -+#endif -+ "\ - \t-s source Local source address\n\ - \t-T keyword TOS value or TLS options\n\ - \t-t Answer TELNET negotiation\n\ - \t-U Use UNIX domain socket\n\ -- \t-u UDP mode\n\ -- \t-V rtable Specify alternate routing table\n\ -+ \t-u UDP mode\n" -+#ifdef SO_RTABLE -+ "\ -+ \t-V rtable Specify alternate routing table\n" -+#endif -+ "\ - \t-v Verbose\n\ - \t-W recvlimit Terminate after receiving a number of packets\n\ - \t-w timeout Timeout for connects and final net reads\n\ --- -2.24.0 - diff --git a/pkg/openbsd/patch/0031-pax-Ignore-EOPNOTSUPP-from-fchmodat.patch b/pkg/openbsd/patch/0031-pax-Ignore-EOPNOTSUPP-from-fchmodat.patch new file mode 100644 index 00000000..2b0a5f22 --- /dev/null +++ b/pkg/openbsd/patch/0031-pax-Ignore-EOPNOTSUPP-from-fchmodat.patch @@ -0,0 +1,26 @@ +From 0f49ae38698a163f7954d28bbaba473b6bf28239 Mon Sep 17 00:00:00 2001 +From: Michael Forney +Date: Fri, 10 Jan 2020 21:40:03 -0800 +Subject: [PATCH] pax: Ignore EOPNOTSUPP from fchmodat + +Linux does not support changing the mode of symlinks. +--- + bin/pax/file_subs.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/bin/pax/file_subs.c b/bin/pax/file_subs.c +index 8aa3d249923..2c0994feca6 100644 +--- a/bin/pax/file_subs.c ++++ b/bin/pax/file_subs.c +@@ -795,7 +795,7 @@ void + set_pmode(char *fnm, mode_t mode) + { + mode &= ABITS; +- if (fchmodat(AT_FDCWD, fnm, mode, AT_SYMLINK_NOFOLLOW) == -1) ++ if (fchmodat(AT_FDCWD, fnm, mode, AT_SYMLINK_NOFOLLOW) == -1 && errno != EOPNOTSUPP) + syswarn(1, errno, "Could not set permissions on %s", fnm); + } + +-- +2.26.2 + diff --git a/pkg/openbsd/patch/0032-acme-client-Fix-build-with-old-bison-versions.patch b/pkg/openbsd/patch/0032-acme-client-Fix-build-with-old-bison-versions.patch new file mode 100644 index 00000000..50639203 --- /dev/null +++ b/pkg/openbsd/patch/0032-acme-client-Fix-build-with-old-bison-versions.patch @@ -0,0 +1,24 @@ +From c3aab43559f17feb64a29f8b0d395532cb423e8b Mon Sep 17 00:00:00 2001 +From: Michael Forney +Date: Wed, 15 Apr 2020 20:26:16 -0700 +Subject: [PATCH] acme-client: Fix build with old bison versions + +--- + usr.sbin/acme-client/parse.y | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/usr.sbin/acme-client/parse.y b/usr.sbin/acme-client/parse.y +index 20818328d92..f392e516b63 100644 +--- a/usr.sbin/acme-client/parse.y ++++ b/usr.sbin/acme-client/parse.y +@@ -97,6 +97,7 @@ typedef struct { + } v; + int lineno; + } YYSTYPE; ++#define YYSTYPE_IS_DECLARED 1 + + %} + +-- +2.26.1 + diff --git a/pkg/openbsd/patch/0032-pax-Ignore-EOPNOTSUPP-from-fchmodat.patch b/pkg/openbsd/patch/0032-pax-Ignore-EOPNOTSUPP-from-fchmodat.patch deleted file mode 100644 index 3a800a9a..00000000 --- a/pkg/openbsd/patch/0032-pax-Ignore-EOPNOTSUPP-from-fchmodat.patch +++ /dev/null @@ -1,26 +0,0 @@ -From afcab21e3980789807c930d417535e883533ef05 Mon Sep 17 00:00:00 2001 -From: Michael Forney -Date: Fri, 10 Jan 2020 21:40:03 -0800 -Subject: [PATCH] pax: Ignore EOPNOTSUPP from fchmodat - -Linux does not support changing the mode of symlinks. ---- - bin/pax/file_subs.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/bin/pax/file_subs.c b/bin/pax/file_subs.c -index cfe56baa5a6..a66c0dd1f9d 100644 ---- a/bin/pax/file_subs.c -+++ b/bin/pax/file_subs.c -@@ -793,7 +793,7 @@ void - set_pmode(char *fnm, mode_t mode) - { - mode &= ABITS; -- if (fchmodat(AT_FDCWD, fnm, mode, AT_SYMLINK_NOFOLLOW) == -1) -+ if (fchmodat(AT_FDCWD, fnm, mode, AT_SYMLINK_NOFOLLOW) == -1 && errno != EOPNOTSUPP) - syswarn(1, errno, "Could not set permissions on %s", fnm); - } - --- -2.24.1 - diff --git a/pkg/openbsd/patch/0033-acme-client-Fix-build-with-old-bison-versions.patch b/pkg/openbsd/patch/0033-acme-client-Fix-build-with-old-bison-versions.patch deleted file mode 100644 index 50639203..00000000 --- a/pkg/openbsd/patch/0033-acme-client-Fix-build-with-old-bison-versions.patch +++ /dev/null @@ -1,24 +0,0 @@ -From c3aab43559f17feb64a29f8b0d395532cb423e8b Mon Sep 17 00:00:00 2001 -From: Michael Forney -Date: Wed, 15 Apr 2020 20:26:16 -0700 -Subject: [PATCH] acme-client: Fix build with old bison versions - ---- - usr.sbin/acme-client/parse.y | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/usr.sbin/acme-client/parse.y b/usr.sbin/acme-client/parse.y -index 20818328d92..f392e516b63 100644 ---- a/usr.sbin/acme-client/parse.y -+++ b/usr.sbin/acme-client/parse.y -@@ -97,6 +97,7 @@ typedef struct { - } v; - int lineno; - } YYSTYPE; -+#define YYSTYPE_IS_DECLARED 1 - - %} - --- -2.26.1 - diff --git a/pkg/openbsd/patch/0033-rsync-Add-implementation-of-MD4.patch b/pkg/openbsd/patch/0033-rsync-Add-implementation-of-MD4.patch new file mode 100644 index 00000000..fc02ee8a --- /dev/null +++ b/pkg/openbsd/patch/0033-rsync-Add-implementation-of-MD4.patch @@ -0,0 +1,414 @@ +From 7fd1cb22e4d028d19ae1a02e50a6fac2c8e26773 Mon Sep 17 00:00:00 2001 +From: Michael Forney +Date: Wed, 15 Apr 2020 22:10:06 -0700 +Subject: [PATCH] rsync: Add implementation of MD4 + +--- + usr.bin/rsync/Makefile | 6 +- + usr.bin/rsync/blocks.c | 2 +- + usr.bin/rsync/downloader.c | 2 +- + usr.bin/rsync/hash.c | 2 +- + usr.bin/rsync/md4.c | 266 +++++++++++++++++++++++++++++++++++++ + usr.bin/rsync/md4.h | 47 +++++++ + usr.bin/rsync/sender.c | 2 +- + 7 files changed, 320 insertions(+), 7 deletions(-) + create mode 100644 usr.bin/rsync/md4.c + create mode 100644 usr.bin/rsync/md4.h + +diff --git a/usr.bin/rsync/Makefile b/usr.bin/rsync/Makefile +index d7af8bd0a87..e04a0268392 100644 +--- a/usr.bin/rsync/Makefile ++++ b/usr.bin/rsync/Makefile +@@ -3,9 +3,9 @@ + PROG= openrsync + SRCS= blocks.c client.c downloader.c fargs.c flist.c hash.c ids.c \ + io.c log.c mkpath.c mktemp.c receiver.c sender.c server.c session.c \ +- socket.c symlinks.c uploader.c main.c misc.c +-LDADD+= -lcrypto -lm +-DPADD+= ${LIBCRYPTO} ${LIBM} ++ socket.c symlinks.c uploader.c main.c misc.c md4.c ++LDADD+= -lm ++DPADD+= ${LIBM} + MAN= openrsync.1 + + CFLAGS+=-g -W -Wall -Wextra +diff --git a/usr.bin/rsync/blocks.c b/usr.bin/rsync/blocks.c +index 242590e5bae..8c1564005e2 100644 +--- a/usr.bin/rsync/blocks.c ++++ b/usr.bin/rsync/blocks.c +@@ -26,7 +26,7 @@ + #include + #include + +-#include ++#include "md4.h" + + #include "extern.h" + +diff --git a/usr.bin/rsync/downloader.c b/usr.bin/rsync/downloader.c +index 36b086f74c8..26d1b531f85 100644 +--- a/usr.bin/rsync/downloader.c ++++ b/usr.bin/rsync/downloader.c +@@ -28,7 +28,7 @@ + #include + #include + +-#include ++#include "md4.h" + + #include "extern.h" + +diff --git a/usr.bin/rsync/hash.c b/usr.bin/rsync/hash.c +index edad21f13a6..6cb131b4b3e 100644 +--- a/usr.bin/rsync/hash.c ++++ b/usr.bin/rsync/hash.c +@@ -21,7 +21,7 @@ + #include + #include + +-#include ++#include "md4.h" + + #include "extern.h" + +diff --git a/usr.bin/rsync/md4.c b/usr.bin/rsync/md4.c +new file mode 100644 +index 00000000000..528f985563f +--- /dev/null ++++ b/usr.bin/rsync/md4.c +@@ -0,0 +1,266 @@ ++/* ++ * This is an OpenSSL-compatible implementation of the RSA Data Security, Inc. ++ * MD4 Message-Digest Algorithm (RFC 1320). ++ * ++ * Homepage: ++ * http://openwall.info/wiki/people/solar/software/public-domain-source-code/md4 ++ * ++ * Author: ++ * Alexander Peslyak, better known as Solar Designer ++ * ++ * This software was written by Alexander Peslyak in 2001. No copyright is ++ * claimed, and the software is hereby placed in the public domain. ++ * In case this attempt to disclaim copyright and place the software in the ++ * public domain is deemed null and void, then the software is ++ * Copyright (c) 2001 Alexander Peslyak and it is hereby released to the ++ * general public under the following terms: ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted. ++ * ++ * There's ABSOLUTELY NO WARRANTY, express or implied. ++ * ++ * (This is a heavily cut-down "BSD license".) ++ * ++ * This differs from Colin Plumb's older public domain implementation in that ++ * no exactly 32-bit integer data type is required (any 32-bit or wider ++ * unsigned integer data type will do), there's no compile-time endianness ++ * configuration, and the function prototypes match OpenSSL's. No code from ++ * Colin Plumb's implementation has been reused; this comment merely compares ++ * the properties of the two independent implementations. ++ * ++ * The primary goals of this implementation are portability and ease of use. ++ * It is meant to be fast, but not as fast as possible. Some known ++ * optimizations are not included to reduce source code size and avoid ++ * compile-time configuration. ++ */ ++ ++#include ++ ++#include "md4.h" ++ ++/* ++ * The basic MD4 functions. ++ * ++ * F and G are optimized compared to their RFC 1320 definitions, with the ++ * optimization for F borrowed from Colin Plumb's MD5 implementation. ++ */ ++#define F(x, y, z) ((z) ^ ((x) & ((y) ^ (z)))) ++#define G(x, y, z) (((x) & ((y) | (z))) | ((y) & (z))) ++#define H(x, y, z) ((x) ^ (y) ^ (z)) ++ ++/* ++ * The MD4 transformation for all three rounds. ++ */ ++#define STEP(f, a, b, c, d, x, s) \ ++ (a) += f((b), (c), (d)) + (x); \ ++ (a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); ++ ++/* ++ * SET reads 4 input bytes in little-endian byte order and stores them in a ++ * properly aligned word in host byte order. ++ * ++ * The check for little-endian architectures that tolerate unaligned memory ++ * accesses is just an optimization. Nothing will break if it fails to detect ++ * a suitable architecture. ++ * ++ * Unfortunately, this optimization may be a C strict aliasing rules violation ++ * if the caller's data buffer has effective type that cannot be aliased by ++ * MD4_u32plus. In practice, this problem may occur if these MD4 routines are ++ * inlined into a calling function, or with future and dangerously advanced ++ * link-time optimizations. For the time being, keeping these MD4 routines in ++ * their own translation unit avoids the problem. ++ */ ++#if defined(__i386__) || defined(__x86_64__) || defined(__vax__) ++#define SET(n) \ ++ (*(MD4_u32plus *)&ptr[(n) * 4]) ++#define GET(n) \ ++ SET(n) ++#else ++#define SET(n) \ ++ (ctx->block[(n)] = \ ++ (MD4_u32plus)ptr[(n) * 4] | \ ++ ((MD4_u32plus)ptr[(n) * 4 + 1] << 8) | \ ++ ((MD4_u32plus)ptr[(n) * 4 + 2] << 16) | \ ++ ((MD4_u32plus)ptr[(n) * 4 + 3] << 24)) ++#define GET(n) \ ++ (ctx->block[(n)]) ++#endif ++ ++/* ++ * This processes one or more 64-byte data blocks, but does NOT update the bit ++ * counters. There are no alignment requirements. ++ */ ++static const void *body(MD4_CTX *ctx, const void *data, unsigned long size) ++{ ++ const unsigned char *ptr; ++ MD4_u32plus a, b, c, d; ++ MD4_u32plus saved_a, saved_b, saved_c, saved_d; ++ const MD4_u32plus ac1 = 0x5a827999, ac2 = 0x6ed9eba1; ++ ++ ptr = (const unsigned char *)data; ++ ++ a = ctx->a; ++ b = ctx->b; ++ c = ctx->c; ++ d = ctx->d; ++ ++ do { ++ saved_a = a; ++ saved_b = b; ++ saved_c = c; ++ saved_d = d; ++ ++/* Round 1 */ ++ STEP(F, a, b, c, d, SET(0), 3) ++ STEP(F, d, a, b, c, SET(1), 7) ++ STEP(F, c, d, a, b, SET(2), 11) ++ STEP(F, b, c, d, a, SET(3), 19) ++ STEP(F, a, b, c, d, SET(4), 3) ++ STEP(F, d, a, b, c, SET(5), 7) ++ STEP(F, c, d, a, b, SET(6), 11) ++ STEP(F, b, c, d, a, SET(7), 19) ++ STEP(F, a, b, c, d, SET(8), 3) ++ STEP(F, d, a, b, c, SET(9), 7) ++ STEP(F, c, d, a, b, SET(10), 11) ++ STEP(F, b, c, d, a, SET(11), 19) ++ STEP(F, a, b, c, d, SET(12), 3) ++ STEP(F, d, a, b, c, SET(13), 7) ++ STEP(F, c, d, a, b, SET(14), 11) ++ STEP(F, b, c, d, a, SET(15), 19) ++ ++/* Round 2 */ ++ STEP(G, a, b, c, d, GET(0) + ac1, 3) ++ STEP(G, d, a, b, c, GET(4) + ac1, 5) ++ STEP(G, c, d, a, b, GET(8) + ac1, 9) ++ STEP(G, b, c, d, a, GET(12) + ac1, 13) ++ STEP(G, a, b, c, d, GET(1) + ac1, 3) ++ STEP(G, d, a, b, c, GET(5) + ac1, 5) ++ STEP(G, c, d, a, b, GET(9) + ac1, 9) ++ STEP(G, b, c, d, a, GET(13) + ac1, 13) ++ STEP(G, a, b, c, d, GET(2) + ac1, 3) ++ STEP(G, d, a, b, c, GET(6) + ac1, 5) ++ STEP(G, c, d, a, b, GET(10) + ac1, 9) ++ STEP(G, b, c, d, a, GET(14) + ac1, 13) ++ STEP(G, a, b, c, d, GET(3) + ac1, 3) ++ STEP(G, d, a, b, c, GET(7) + ac1, 5) ++ STEP(G, c, d, a, b, GET(11) + ac1, 9) ++ STEP(G, b, c, d, a, GET(15) + ac1, 13) ++ ++/* Round 3 */ ++ STEP(H, a, b, c, d, GET(0) + ac2, 3) ++ STEP(H, d, a, b, c, GET(8) + ac2, 9) ++ STEP(H, c, d, a, b, GET(4) + ac2, 11) ++ STEP(H, b, c, d, a, GET(12) + ac2, 15) ++ STEP(H, a, b, c, d, GET(2) + ac2, 3) ++ STEP(H, d, a, b, c, GET(10) + ac2, 9) ++ STEP(H, c, d, a, b, GET(6) + ac2, 11) ++ STEP(H, b, c, d, a, GET(14) + ac2, 15) ++ STEP(H, a, b, c, d, GET(1) + ac2, 3) ++ STEP(H, d, a, b, c, GET(9) + ac2, 9) ++ STEP(H, c, d, a, b, GET(5) + ac2, 11) ++ STEP(H, b, c, d, a, GET(13) + ac2, 15) ++ STEP(H, a, b, c, d, GET(3) + ac2, 3) ++ STEP(H, d, a, b, c, GET(11) + ac2, 9) ++ STEP(H, c, d, a, b, GET(7) + ac2, 11) ++ STEP(H, b, c, d, a, GET(15) + ac2, 15) ++ ++ a += saved_a; ++ b += saved_b; ++ c += saved_c; ++ d += saved_d; ++ ++ ptr += 64; ++ } while (size -= 64); ++ ++ ctx->a = a; ++ ctx->b = b; ++ ctx->c = c; ++ ctx->d = d; ++ ++ return ptr; ++} ++ ++void MD4_Init(MD4_CTX *ctx) ++{ ++ ctx->a = 0x67452301; ++ ctx->b = 0xefcdab89; ++ ctx->c = 0x98badcfe; ++ ctx->d = 0x10325476; ++ ++ ctx->lo = 0; ++ ctx->hi = 0; ++} ++ ++void MD4_Update(MD4_CTX *ctx, const void *data, unsigned long size) ++{ ++ MD4_u32plus saved_lo; ++ unsigned long used, available; ++ ++ saved_lo = ctx->lo; ++ if ((ctx->lo = (saved_lo + size) & 0x1fffffff) < saved_lo) ++ ctx->hi++; ++ ctx->hi += size >> 29; ++ ++ used = saved_lo & 0x3f; ++ ++ if (used) { ++ available = 64 - used; ++ ++ if (size < available) { ++ memcpy(&ctx->buffer[used], data, size); ++ return; ++ } ++ ++ memcpy(&ctx->buffer[used], data, available); ++ data = (const unsigned char *)data + available; ++ size -= available; ++ body(ctx, ctx->buffer, 64); ++ } ++ ++ if (size >= 64) { ++ data = body(ctx, data, size & ~(unsigned long)0x3f); ++ size &= 0x3f; ++ } ++ ++ memcpy(ctx->buffer, data, size); ++} ++ ++#define OUT(dst, src) \ ++ (dst)[0] = (unsigned char)(src); \ ++ (dst)[1] = (unsigned char)((src) >> 8); \ ++ (dst)[2] = (unsigned char)((src) >> 16); \ ++ (dst)[3] = (unsigned char)((src) >> 24); ++ ++void MD4_Final(unsigned char *result, MD4_CTX *ctx) ++{ ++ unsigned long used, available; ++ ++ used = ctx->lo & 0x3f; ++ ++ ctx->buffer[used++] = 0x80; ++ ++ available = 64 - used; ++ ++ if (available < 8) { ++ memset(&ctx->buffer[used], 0, available); ++ body(ctx, ctx->buffer, 64); ++ used = 0; ++ available = 64; ++ } ++ ++ memset(&ctx->buffer[used], 0, available - 8); ++ ++ ctx->lo <<= 3; ++ OUT(&ctx->buffer[56], ctx->lo) ++ OUT(&ctx->buffer[60], ctx->hi) ++ ++ body(ctx, ctx->buffer, 64); ++ ++ OUT(&result[0], ctx->a) ++ OUT(&result[4], ctx->b) ++ OUT(&result[8], ctx->c) ++ OUT(&result[12], ctx->d) ++ ++ memset(ctx, 0, sizeof(*ctx)); ++} +diff --git a/usr.bin/rsync/md4.h b/usr.bin/rsync/md4.h +new file mode 100644 +index 00000000000..ebf5bb555a0 +--- /dev/null ++++ b/usr.bin/rsync/md4.h +@@ -0,0 +1,47 @@ ++/* ++ * This is an OpenSSL-compatible implementation of the RSA Data Security, Inc. ++ * MD4 Message-Digest Algorithm (RFC 1320). ++ * ++ * Homepage: ++ * http://openwall.info/wiki/people/solar/software/public-domain-source-code/md4 ++ * ++ * Author: ++ * Alexander Peslyak, better known as Solar Designer ++ * ++ * This software was written by Alexander Peslyak in 2001. No copyright is ++ * claimed, and the software is hereby placed in the public domain. ++ * In case this attempt to disclaim copyright and place the software in the ++ * public domain is deemed null and void, then the software is ++ * Copyright (c) 2001 Alexander Peslyak and it is hereby released to the ++ * general public under the following terms: ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted. ++ * ++ * There's ABSOLUTELY NO WARRANTY, express or implied. ++ * ++ * See md4.c for more information. ++ */ ++ ++#ifndef _MD4_H ++#define _MD4_H ++ ++#include ++ ++#define MD4_DIGEST_LENGTH 16 ++ ++/* Any 32-bit or wider unsigned integer data type will do */ ++typedef uint_fast32_t MD4_u32plus; ++ ++typedef struct { ++ MD4_u32plus lo, hi; ++ MD4_u32plus a, b, c, d; ++ unsigned char buffer[64]; ++ MD4_u32plus block[16]; ++} MD4_CTX; ++ ++extern void MD4_Init(MD4_CTX *ctx); ++extern void MD4_Update(MD4_CTX *ctx, const void *data, unsigned long size); ++extern void MD4_Final(unsigned char *result, MD4_CTX *ctx); ++ ++#endif +diff --git a/usr.bin/rsync/sender.c b/usr.bin/rsync/sender.c +index d6a1f55d1a9..3dacfc3709d 100644 +--- a/usr.bin/rsync/sender.c ++++ b/usr.bin/rsync/sender.c +@@ -26,7 +26,7 @@ + #include + #include + +-#include ++#include "md4.h" + + #include "extern.h" + +-- +2.26.1 + diff --git a/pkg/openbsd/patch/0034-rsync-Add-implementation-of-MD4.patch b/pkg/openbsd/patch/0034-rsync-Add-implementation-of-MD4.patch deleted file mode 100644 index fc02ee8a..00000000 --- a/pkg/openbsd/patch/0034-rsync-Add-implementation-of-MD4.patch +++ /dev/null @@ -1,414 +0,0 @@ -From 7fd1cb22e4d028d19ae1a02e50a6fac2c8e26773 Mon Sep 17 00:00:00 2001 -From: Michael Forney -Date: Wed, 15 Apr 2020 22:10:06 -0700 -Subject: [PATCH] rsync: Add implementation of MD4 - ---- - usr.bin/rsync/Makefile | 6 +- - usr.bin/rsync/blocks.c | 2 +- - usr.bin/rsync/downloader.c | 2 +- - usr.bin/rsync/hash.c | 2 +- - usr.bin/rsync/md4.c | 266 +++++++++++++++++++++++++++++++++++++ - usr.bin/rsync/md4.h | 47 +++++++ - usr.bin/rsync/sender.c | 2 +- - 7 files changed, 320 insertions(+), 7 deletions(-) - create mode 100644 usr.bin/rsync/md4.c - create mode 100644 usr.bin/rsync/md4.h - -diff --git a/usr.bin/rsync/Makefile b/usr.bin/rsync/Makefile -index d7af8bd0a87..e04a0268392 100644 ---- a/usr.bin/rsync/Makefile -+++ b/usr.bin/rsync/Makefile -@@ -3,9 +3,9 @@ - PROG= openrsync - SRCS= blocks.c client.c downloader.c fargs.c flist.c hash.c ids.c \ - io.c log.c mkpath.c mktemp.c receiver.c sender.c server.c session.c \ -- socket.c symlinks.c uploader.c main.c misc.c --LDADD+= -lcrypto -lm --DPADD+= ${LIBCRYPTO} ${LIBM} -+ socket.c symlinks.c uploader.c main.c misc.c md4.c -+LDADD+= -lm -+DPADD+= ${LIBM} - MAN= openrsync.1 - - CFLAGS+=-g -W -Wall -Wextra -diff --git a/usr.bin/rsync/blocks.c b/usr.bin/rsync/blocks.c -index 242590e5bae..8c1564005e2 100644 ---- a/usr.bin/rsync/blocks.c -+++ b/usr.bin/rsync/blocks.c -@@ -26,7 +26,7 @@ - #include - #include - --#include -+#include "md4.h" - - #include "extern.h" - -diff --git a/usr.bin/rsync/downloader.c b/usr.bin/rsync/downloader.c -index 36b086f74c8..26d1b531f85 100644 ---- a/usr.bin/rsync/downloader.c -+++ b/usr.bin/rsync/downloader.c -@@ -28,7 +28,7 @@ - #include - #include - --#include -+#include "md4.h" - - #include "extern.h" - -diff --git a/usr.bin/rsync/hash.c b/usr.bin/rsync/hash.c -index edad21f13a6..6cb131b4b3e 100644 ---- a/usr.bin/rsync/hash.c -+++ b/usr.bin/rsync/hash.c -@@ -21,7 +21,7 @@ - #include - #include - --#include -+#include "md4.h" - - #include "extern.h" - -diff --git a/usr.bin/rsync/md4.c b/usr.bin/rsync/md4.c -new file mode 100644 -index 00000000000..528f985563f ---- /dev/null -+++ b/usr.bin/rsync/md4.c -@@ -0,0 +1,266 @@ -+/* -+ * This is an OpenSSL-compatible implementation of the RSA Data Security, Inc. -+ * MD4 Message-Digest Algorithm (RFC 1320). -+ * -+ * Homepage: -+ * http://openwall.info/wiki/people/solar/software/public-domain-source-code/md4 -+ * -+ * Author: -+ * Alexander Peslyak, better known as Solar Designer -+ * -+ * This software was written by Alexander Peslyak in 2001. No copyright is -+ * claimed, and the software is hereby placed in the public domain. -+ * In case this attempt to disclaim copyright and place the software in the -+ * public domain is deemed null and void, then the software is -+ * Copyright (c) 2001 Alexander Peslyak and it is hereby released to the -+ * general public under the following terms: -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted. -+ * -+ * There's ABSOLUTELY NO WARRANTY, express or implied. -+ * -+ * (This is a heavily cut-down "BSD license".) -+ * -+ * This differs from Colin Plumb's older public domain implementation in that -+ * no exactly 32-bit integer data type is required (any 32-bit or wider -+ * unsigned integer data type will do), there's no compile-time endianness -+ * configuration, and the function prototypes match OpenSSL's. No code from -+ * Colin Plumb's implementation has been reused; this comment merely compares -+ * the properties of the two independent implementations. -+ * -+ * The primary goals of this implementation are portability and ease of use. -+ * It is meant to be fast, but not as fast as possible. Some known -+ * optimizations are not included to reduce source code size and avoid -+ * compile-time configuration. -+ */ -+ -+#include -+ -+#include "md4.h" -+ -+/* -+ * The basic MD4 functions. -+ * -+ * F and G are optimized compared to their RFC 1320 definitions, with the -+ * optimization for F borrowed from Colin Plumb's MD5 implementation. -+ */ -+#define F(x, y, z) ((z) ^ ((x) & ((y) ^ (z)))) -+#define G(x, y, z) (((x) & ((y) | (z))) | ((y) & (z))) -+#define H(x, y, z) ((x) ^ (y) ^ (z)) -+ -+/* -+ * The MD4 transformation for all three rounds. -+ */ -+#define STEP(f, a, b, c, d, x, s) \ -+ (a) += f((b), (c), (d)) + (x); \ -+ (a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); -+ -+/* -+ * SET reads 4 input bytes in little-endian byte order and stores them in a -+ * properly aligned word in host byte order. -+ * -+ * The check for little-endian architectures that tolerate unaligned memory -+ * accesses is just an optimization. Nothing will break if it fails to detect -+ * a suitable architecture. -+ * -+ * Unfortunately, this optimization may be a C strict aliasing rules violation -+ * if the caller's data buffer has effective type that cannot be aliased by -+ * MD4_u32plus. In practice, this problem may occur if these MD4 routines are -+ * inlined into a calling function, or with future and dangerously advanced -+ * link-time optimizations. For the time being, keeping these MD4 routines in -+ * their own translation unit avoids the problem. -+ */ -+#if defined(__i386__) || defined(__x86_64__) || defined(__vax__) -+#define SET(n) \ -+ (*(MD4_u32plus *)&ptr[(n) * 4]) -+#define GET(n) \ -+ SET(n) -+#else -+#define SET(n) \ -+ (ctx->block[(n)] = \ -+ (MD4_u32plus)ptr[(n) * 4] | \ -+ ((MD4_u32plus)ptr[(n) * 4 + 1] << 8) | \ -+ ((MD4_u32plus)ptr[(n) * 4 + 2] << 16) | \ -+ ((MD4_u32plus)ptr[(n) * 4 + 3] << 24)) -+#define GET(n) \ -+ (ctx->block[(n)]) -+#endif -+ -+/* -+ * This processes one or more 64-byte data blocks, but does NOT update the bit -+ * counters. There are no alignment requirements. -+ */ -+static const void *body(MD4_CTX *ctx, const void *data, unsigned long size) -+{ -+ const unsigned char *ptr; -+ MD4_u32plus a, b, c, d; -+ MD4_u32plus saved_a, saved_b, saved_c, saved_d; -+ const MD4_u32plus ac1 = 0x5a827999, ac2 = 0x6ed9eba1; -+ -+ ptr = (const unsigned char *)data; -+ -+ a = ctx->a; -+ b = ctx->b; -+ c = ctx->c; -+ d = ctx->d; -+ -+ do { -+ saved_a = a; -+ saved_b = b; -+ saved_c = c; -+ saved_d = d; -+ -+/* Round 1 */ -+ STEP(F, a, b, c, d, SET(0), 3) -+ STEP(F, d, a, b, c, SET(1), 7) -+ STEP(F, c, d, a, b, SET(2), 11) -+ STEP(F, b, c, d, a, SET(3), 19) -+ STEP(F, a, b, c, d, SET(4), 3) -+ STEP(F, d, a, b, c, SET(5), 7) -+ STEP(F, c, d, a, b, SET(6), 11) -+ STEP(F, b, c, d, a, SET(7), 19) -+ STEP(F, a, b, c, d, SET(8), 3) -+ STEP(F, d, a, b, c, SET(9), 7) -+ STEP(F, c, d, a, b, SET(10), 11) -+ STEP(F, b, c, d, a, SET(11), 19) -+ STEP(F, a, b, c, d, SET(12), 3) -+ STEP(F, d, a, b, c, SET(13), 7) -+ STEP(F, c, d, a, b, SET(14), 11) -+ STEP(F, b, c, d, a, SET(15), 19) -+ -+/* Round 2 */ -+ STEP(G, a, b, c, d, GET(0) + ac1, 3) -+ STEP(G, d, a, b, c, GET(4) + ac1, 5) -+ STEP(G, c, d, a, b, GET(8) + ac1, 9) -+ STEP(G, b, c, d, a, GET(12) + ac1, 13) -+ STEP(G, a, b, c, d, GET(1) + ac1, 3) -+ STEP(G, d, a, b, c, GET(5) + ac1, 5) -+ STEP(G, c, d, a, b, GET(9) + ac1, 9) -+ STEP(G, b, c, d, a, GET(13) + ac1, 13) -+ STEP(G, a, b, c, d, GET(2) + ac1, 3) -+ STEP(G, d, a, b, c, GET(6) + ac1, 5) -+ STEP(G, c, d, a, b, GET(10) + ac1, 9) -+ STEP(G, b, c, d, a, GET(14) + ac1, 13) -+ STEP(G, a, b, c, d, GET(3) + ac1, 3) -+ STEP(G, d, a, b, c, GET(7) + ac1, 5) -+ STEP(G, c, d, a, b, GET(11) + ac1, 9) -+ STEP(G, b, c, d, a, GET(15) + ac1, 13) -+ -+/* Round 3 */ -+ STEP(H, a, b, c, d, GET(0) + ac2, 3) -+ STEP(H, d, a, b, c, GET(8) + ac2, 9) -+ STEP(H, c, d, a, b, GET(4) + ac2, 11) -+ STEP(H, b, c, d, a, GET(12) + ac2, 15) -+ STEP(H, a, b, c, d, GET(2) + ac2, 3) -+ STEP(H, d, a, b, c, GET(10) + ac2, 9) -+ STEP(H, c, d, a, b, GET(6) + ac2, 11) -+ STEP(H, b, c, d, a, GET(14) + ac2, 15) -+ STEP(H, a, b, c, d, GET(1) + ac2, 3) -+ STEP(H, d, a, b, c, GET(9) + ac2, 9) -+ STEP(H, c, d, a, b, GET(5) + ac2, 11) -+ STEP(H, b, c, d, a, GET(13) + ac2, 15) -+ STEP(H, a, b, c, d, GET(3) + ac2, 3) -+ STEP(H, d, a, b, c, GET(11) + ac2, 9) -+ STEP(H, c, d, a, b, GET(7) + ac2, 11) -+ STEP(H, b, c, d, a, GET(15) + ac2, 15) -+ -+ a += saved_a; -+ b += saved_b; -+ c += saved_c; -+ d += saved_d; -+ -+ ptr += 64; -+ } while (size -= 64); -+ -+ ctx->a = a; -+ ctx->b = b; -+ ctx->c = c; -+ ctx->d = d; -+ -+ return ptr; -+} -+ -+void MD4_Init(MD4_CTX *ctx) -+{ -+ ctx->a = 0x67452301; -+ ctx->b = 0xefcdab89; -+ ctx->c = 0x98badcfe; -+ ctx->d = 0x10325476; -+ -+ ctx->lo = 0; -+ ctx->hi = 0; -+} -+ -+void MD4_Update(MD4_CTX *ctx, const void *data, unsigned long size) -+{ -+ MD4_u32plus saved_lo; -+ unsigned long used, available; -+ -+ saved_lo = ctx->lo; -+ if ((ctx->lo = (saved_lo + size) & 0x1fffffff) < saved_lo) -+ ctx->hi++; -+ ctx->hi += size >> 29; -+ -+ used = saved_lo & 0x3f; -+ -+ if (used) { -+ available = 64 - used; -+ -+ if (size < available) { -+ memcpy(&ctx->buffer[used], data, size); -+ return; -+ } -+ -+ memcpy(&ctx->buffer[used], data, available); -+ data = (const unsigned char *)data + available; -+ size -= available; -+ body(ctx, ctx->buffer, 64); -+ } -+ -+ if (size >= 64) { -+ data = body(ctx, data, size & ~(unsigned long)0x3f); -+ size &= 0x3f; -+ } -+ -+ memcpy(ctx->buffer, data, size); -+} -+ -+#define OUT(dst, src) \ -+ (dst)[0] = (unsigned char)(src); \ -+ (dst)[1] = (unsigned char)((src) >> 8); \ -+ (dst)[2] = (unsigned char)((src) >> 16); \ -+ (dst)[3] = (unsigned char)((src) >> 24); -+ -+void MD4_Final(unsigned char *result, MD4_CTX *ctx) -+{ -+ unsigned long used, available; -+ -+ used = ctx->lo & 0x3f; -+ -+ ctx->buffer[used++] = 0x80; -+ -+ available = 64 - used; -+ -+ if (available < 8) { -+ memset(&ctx->buffer[used], 0, available); -+ body(ctx, ctx->buffer, 64); -+ used = 0; -+ available = 64; -+ } -+ -+ memset(&ctx->buffer[used], 0, available - 8); -+ -+ ctx->lo <<= 3; -+ OUT(&ctx->buffer[56], ctx->lo) -+ OUT(&ctx->buffer[60], ctx->hi) -+ -+ body(ctx, ctx->buffer, 64); -+ -+ OUT(&result[0], ctx->a) -+ OUT(&result[4], ctx->b) -+ OUT(&result[8], ctx->c) -+ OUT(&result[12], ctx->d) -+ -+ memset(ctx, 0, sizeof(*ctx)); -+} -diff --git a/usr.bin/rsync/md4.h b/usr.bin/rsync/md4.h -new file mode 100644 -index 00000000000..ebf5bb555a0 ---- /dev/null -+++ b/usr.bin/rsync/md4.h -@@ -0,0 +1,47 @@ -+/* -+ * This is an OpenSSL-compatible implementation of the RSA Data Security, Inc. -+ * MD4 Message-Digest Algorithm (RFC 1320). -+ * -+ * Homepage: -+ * http://openwall.info/wiki/people/solar/software/public-domain-source-code/md4 -+ * -+ * Author: -+ * Alexander Peslyak, better known as Solar Designer -+ * -+ * This software was written by Alexander Peslyak in 2001. No copyright is -+ * claimed, and the software is hereby placed in the public domain. -+ * In case this attempt to disclaim copyright and place the software in the -+ * public domain is deemed null and void, then the software is -+ * Copyright (c) 2001 Alexander Peslyak and it is hereby released to the -+ * general public under the following terms: -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted. -+ * -+ * There's ABSOLUTELY NO WARRANTY, express or implied. -+ * -+ * See md4.c for more information. -+ */ -+ -+#ifndef _MD4_H -+#define _MD4_H -+ -+#include -+ -+#define MD4_DIGEST_LENGTH 16 -+ -+/* Any 32-bit or wider unsigned integer data type will do */ -+typedef uint_fast32_t MD4_u32plus; -+ -+typedef struct { -+ MD4_u32plus lo, hi; -+ MD4_u32plus a, b, c, d; -+ unsigned char buffer[64]; -+ MD4_u32plus block[16]; -+} MD4_CTX; -+ -+extern void MD4_Init(MD4_CTX *ctx); -+extern void MD4_Update(MD4_CTX *ctx, const void *data, unsigned long size); -+extern void MD4_Final(unsigned char *result, MD4_CTX *ctx); -+ -+#endif -diff --git a/usr.bin/rsync/sender.c b/usr.bin/rsync/sender.c -index d6a1f55d1a9..3dacfc3709d 100644 ---- a/usr.bin/rsync/sender.c -+++ b/usr.bin/rsync/sender.c -@@ -26,7 +26,7 @@ - #include - #include - --#include -+#include "md4.h" - - #include "extern.h" - --- -2.26.1 - diff --git a/pkg/openbsd/sha256 b/pkg/openbsd/sha256 index 1eec0930..d70b5f83 100644 --- a/pkg/openbsd/sha256 +++ b/pkg/openbsd/sha256 @@ -1,2 +1,2 @@ -577094f72c6a0bc7e27944eed0d9d520dc5c7cb3245a9fbf7415b129b132543a src.tar.gz -a1b19665989c02a2017a639d47a042f4fe7f584b6298727e982a5536020b832d sys.tar.gz +524bd6a33a9659f5349c3693194c15712989e07e64e69d0568ee88669f0a3def src.tar.gz +874511599b86d0efa989361980cab29bf27ed7a9712b47d399d93d5d5c1e5871 sys.tar.gz diff --git a/pkg/openbsd/url b/pkg/openbsd/url index b3282f8b..9cbb6477 100644 --- a/pkg/openbsd/url +++ b/pkg/openbsd/url @@ -1,5 +1,5 @@ remote-name -url = "https://fastly.cdn.openbsd.org/pub/OpenBSD/6.6/src.tar.gz" +url = "https://fastly.cdn.openbsd.org/pub/OpenBSD/6.7/src.tar.gz" remote-name -url = "https://fastly.cdn.openbsd.org/pub/OpenBSD/6.6/sys.tar.gz" +url = "https://fastly.cdn.openbsd.org/pub/OpenBSD/6.7/sys.tar.gz" diff --git a/pkg/openbsd/ver b/pkg/openbsd/ver index 83f084ab..ae72a1da 100644 --- a/pkg/openbsd/ver +++ b/pkg/openbsd/ver @@ -1 +1 @@ -6.6 r5 +6.7 r0 -- cgit v1.2.3