Skip to content

Commit 4aa6f04

Browse files
authored
Merge pull request #75 from rapier1/release_candidates
Merge release candidate for 18.4.0 into master
2 parents 1cfdd65 + 6112792 commit 4aa6f04

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

71 files changed

+1667
-1064
lines changed

.github/configs

+16-5
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,11 @@ case "$config" in
164164
libressl-*)
165165
LIBCRYPTOFLAGS="--with-ssl-dir=/opt/libressl --with-rpath=-Wl,-rpath,"
166166
;;
167+
putty-*)
168+
CONFIGFLAGS="--with-plink=/usr/local/bin/plink --with-puttygen=/usr/local/bin/puttygen"
169+
# We don't need to rerun the regular tests, just the interop ones.
170+
TEST_TARGET=interop-tests
171+
;;
167172
openssl-*)
168173
LIBCRYPTOFLAGS="--with-ssl-dir=/opt/openssl --with-rpath=-Wl,-rpath,"
169174
# OpenSSL 1.1.1 specifically has a bug in its RNG that breaks reexec
@@ -277,20 +282,22 @@ case "${TARGET_HOST}" in
277282
;;
278283
minix3)
279284
CONFIGFLAGS="${CONFIGFLAGS} --disable-security-key"
285+
# Unix domain sockets don't work quite like we expect, so also
286+
# disable FD passing (and thus multiplexing).
287+
CONFIGFLAGS="${CONFIGFLAGS} --disable-fd-passing"
280288
LIBCRYPTOFLAGS="--without-openssl"
289+
281290
# Minix does not have a loopback interface so we have to skip any
282291
# test that relies on one.
283292
# Also, Minix seems to be very limited in the number of select()
284293
# calls that can be operating concurrently, so prune additional tests for that.
285294
T="addrmatch agent-restrict brokenkeys cfgmatch cfgmatchlisten cfgparse
286-
connect connect-uri exit-status forwarding hostkey-agent
287-
key-options keyscan knownhosts-command login-timeout
295+
connect connect-uri dynamic-forward exit-status forwarding
296+
forward-control
297+
hostkey-agent key-options keyscan knownhosts-command login-timeout
288298
reconfigure reexec rekey scp scp-uri scp3 sftp sftp-badcmds
289299
sftp-batch sftp-cmds sftp-glob sftp-perm sftp-uri stderr-data
290300
transfer"
291-
# Unix domain sockets don't work quite like we expect, so also skip any tests
292-
# that use multiplexing.
293-
T="$T connection-timeout dynamic-forward forward-control multiplex"
294301
SKIP_LTESTS="$(echo $T)"
295302
TEST_TARGET=t-exec
296303
SUDO=""
@@ -328,6 +335,10 @@ case "$host" in
328335
# modern versions don't ship with libcrypto.
329336
LIBCRYPTOFLAGS="--without-openssl"
330337
TEST_TARGET=t-exec
338+
339+
# On some OS X runners we can't write to /var/empty.
340+
CONFIGFLAGS="${CONFIGFLAGS} --with-privsep-path=/usr/local/empty"
341+
331342
case "$host" in
332343
*-darwin22.*)
333344
# sudo -S nobody doesn't work on macos 13 for some reason.

.github/setup_ci.sh

+26
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,10 @@ for TARGET in $TARGETS; do
143143
INSTALL_BORINGSSL=1
144144
PACKAGES="${PACKAGES} cmake ninja-build"
145145
;;
146+
putty-*)
147+
INSTALL_PUTTY=$(echo "${TARGET}" | cut -f2 -d-)
148+
PACKAGES="${PACKAGES} cmake"
149+
;;
146150
valgrind*)
147151
PACKAGES="$PACKAGES valgrind"
148152
;;
@@ -250,3 +254,25 @@ if [ ! -z "${INSTALL_ZLIB}" ]; then
250254
cd ${HOME}/zlib && ./configure && make &&
251255
sudo make install prefix=/opt/zlib)
252256
fi
257+
258+
if [ ! -z "${INSTALL_PUTTY}" ]; then
259+
ver="${INSTALL_PUTTY}"
260+
case "${INSTALL_PUTTY}" in
261+
snapshot)
262+
tarball=putty.tar.gz
263+
(cd /tmp && wget https://tartarus.org/~simon/putty-snapshots/${tarball})
264+
;;
265+
*)
266+
tarball=putty-${ver}.tar.gz
267+
(cd /tmp && wget https://the.earth.li/~sgtatham/putty/${ver}/${tarball})
268+
;;
269+
esac
270+
(cd ${HOME} && tar xfz /tmp/${tarball} && cd putty-*
271+
if [ -f CMakeLists.txt ]; then
272+
cmake . && cmake --build . && sudo cmake --build . --target install
273+
else
274+
./configure && make && sudo make install
275+
fi
276+
)
277+
/usr/local/bin/plink -V
278+
fi

.github/workflows/c-cpp.yml

+18-5
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ jobs:
3131
# - { target: ubuntu-20.04, config: valgrind-5 }
3232
- { target: ubuntu-20.04, config: valgrind-6 }
3333
- { target: ubuntu-20.04, config: valgrind-7 }
34-
- { target: ubuntu-20.04, config: c89 }
34+
# binn.c no longer works with c89 so remove this test.
35+
# - { target: ubuntu-20.04, config: c89 }
3536
- { target: ubuntu-20.04, config: clang-6.0 }
3637
- { target: ubuntu-20.04, config: clang-8 }
3738
- { target: ubuntu-20.04, config: clang-9 }
@@ -51,20 +52,32 @@ jobs:
5152
# - { target: ubuntu-20.04, config: musl }
5253
- { target: ubuntu-latest, config: libressl-master }
5354
- { target: ubuntu-latest, config: libressl-3.7.2 }
54-
- { target: ubuntu-latest, config: libressl-3.8.2 }
55+
- { target: ubuntu-latest, config: libressl-3.8.3 }
56+
- { target: ubuntu-latest, config: libressl-3.9.0 }
5557
- { target: ubuntu-latest, config: openssl-master }
5658
- { target: ubuntu-latest, config: openssl-noec }
5759
- { target: ubuntu-latest, config: openssl-1.1.1 }
5860
- { target: ubuntu-latest, config: openssl-1.1.1t }
5961
- { target: ubuntu-latest, config: openssl-1.1.1w }
6062
- { target: ubuntu-latest, config: openssl-3.0.0 }
61-
- { target: ubuntu-latest, config: openssl-3.0.12 }
63+
- { target: ubuntu-latest, config: openssl-3.0.13 }
6264
- { target: ubuntu-latest, config: openssl-3.1.0 }
63-
- { target: ubuntu-latest, config: openssl-3.1.4 }
64-
- { target: ubuntu-latest, config: openssl-3.2.0 }
65+
- { target: ubuntu-latest, config: openssl-3.1.5 }
66+
- { target: ubuntu-latest, config: openssl-3.2.1 }
6567
- { target: ubuntu-latest, config: openssl-1.1.1_stable }
6668
- { target: ubuntu-latest, config: openssl-3.0 } # stable branch
6769
- { target: ubuntu-latest, config: openssl-3.2 } # stable branch
70+
- { target: ubuntu-latest, config: putty-0.71 }
71+
- { target: ubuntu-latest, config: putty-0.72 }
72+
- { target: ubuntu-latest, config: putty-0.73 }
73+
- { target: ubuntu-latest, config: putty-0.74 }
74+
- { target: ubuntu-latest, config: putty-0.75 }
75+
- { target: ubuntu-latest, config: putty-0.76 }
76+
- { target: ubuntu-latest, config: putty-0.77 }
77+
- { target: ubuntu-latest, config: putty-0.78 }
78+
- { target: ubuntu-latest, config: putty-0.79 }
79+
- { target: ubuntu-latest, config: putty-0.80 }
80+
- { target: ubuntu-latest, config: putty-snapshot }
6881
- { target: ubuntu-latest, config: zlib-develop }
6982
- { target: ubuntu-22.04, config: pam }
7083
- { target: ubuntu-22.04, config: krb5 }

.github/workflows/selfhosted.yml

+1
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ jobs:
7373
- { target: fbsd14, config: pam, host: libvirt }
7474
- { target: nbsd8, config: pam, host: libvirt }
7575
- { target: nbsd9, config: pam, host: libvirt }
76+
- { target: nbsd10, config: pam, host: libvirt }
7677
# VMs with persistent disks that have their own runner.
7778
- { target: win10, config: default, host: win10 }
7879
- { target: win10, config: cygwin-release, host: win10 }

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ survey.sh
1818
**/*.so
1919
**/*.out
2020
**/*.a
21+
**/*.un~
22+
**/.*.swp
2123
autom4te.cache/
2224
!regress/misc/fuzz-harness/Makefile
2325
!regress/unittests/sshsig/Makefile

.skipped-commit-ids

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
509bb19bb9762a4b3b589af98bac2e730541b6d4 clean sshd random relinking kit
12
5317f294d63a876bfc861e19773b1575f96f027d remove libssh from makefiles
23
a337e886a49f96701ccbc4832bed086a68abfa85 Makefile changes
34
f2c9feb26963615c4fece921906cf72e248b61ee more Makefile
@@ -27,6 +28,7 @@ cc12a9029833d222043aecd252d654965c351a69 moduli-gen Makefile
2728
f9a0726d957cf10692a231996a1f34e7f9cdfeb0 moduli update
2829
1e0a2692b7e20b126dda60bf04999d1d30d959d8 sshd relinking makefile changes
2930
e1dc11143f83082e3154d6094f9136d0dc2637ad more relinking makefile tweaks
31+
5a636f6ca7f25bfe775df4952f7aac90a7fcbbee moduli update
3032

3133
Old upstream tree:
3234

PROTOCOL

+14-12
Original file line numberDiff line numberDiff line change
@@ -137,33 +137,34 @@ than as a named global or channel request to allow pings with very
137137
short packet lengths, which would not be possible with other
138138
approaches.
139139

140-
1.9 transport: strict key exchange extension
140+
1.10 transport: strict key exchange extension
141141

142142
OpenSSH supports a number of transport-layer hardening measures under
143143
a "strict KEX" feature. This feature is signalled similarly to the
144144
RFC8308 ext-info feature: by including a additional algorithm in the
145-
initiial SSH2_MSG_KEXINIT kex_algorithms field. The client may append
145+
initial SSH2_MSG_KEXINIT kex_algorithms field. The client may append
146146
"[email protected]" to its kex_algorithms and the server
147147
may append "[email protected]". These pseudo-algorithms
148148
are only valid in the initial SSH2_MSG_KEXINIT and MUST be ignored
149149
if they are present in subsequent SSH2_MSG_KEXINIT packets.
150150

151151
When an endpoint that supports this extension observes this algorithm
152152
name in a peer's KEXINIT packet, it MUST make the following changes to
153-
the the protocol:
154-
155-
a) During initial KEX, terminate the connection if any unexpected or
156-
out-of-sequence packet is received. This includes terminating the
157-
connection if the first packet received is not SSH2_MSG_KEXINIT.
158-
Unexpected packets for the purpose of strict KEX include messages
159-
that are otherwise valid at any time during the connection such as
160-
SSH2_MSG_DEBUG and SSH2_MSG_IGNORE.
153+
the protocol:
154+
155+
a) During initial KEX, terminate the connection if out-of-sequence
156+
packet or any message that is not strictly required by KEX is
157+
received. This includes terminating the connection if the first
158+
packet received is not SSH2_MSG_KEXINIT. Unexpected packets for
159+
the purpose of strict KEX include messages that are otherwise
160+
valid at any time during the connection such as SSH2_MSG_DEBUG,
161+
SSH2_MSG_IGNORE or SSH2_MSG_UNIMPLEMENTED.
161162
b) After sending or receiving a SSH2_MSG_NEWKEYS message, reset the
162163
packet sequence number to zero. This behaviour persists for the
163164
duration of the connection (i.e. not just the first
164165
SSH2_MSG_NEWKEYS).
165166

166-
1.10 transport: SSH2_MSG_EXT_INFO during user authentication
167+
1.11 transport: SSH2_MSG_EXT_INFO during user authentication
167168

168169
This protocol extension allows the SSH2_MSG_EXT_INFO to be sent
169170
during user authentication. RFC8308 does allow a second
@@ -735,6 +736,7 @@ identifiers:
735736
The server will reply with a SSH_FXP_EXTENDED_REPLY:
736737

737738
byte SSH_FXP_EXTENDED_REPLY
739+
uint32 id
738740
string usernames
739741
string groupnames
740742

@@ -790,4 +792,4 @@ master instance and later clients.
790792
OpenSSH extends the usual agent protocol. These changes are documented
791793
in the PROTOCOL.agent file.
792794

793-
$OpenBSD: PROTOCOL,v 1.51 2023/12/18 14:45:49 djm Exp $
795+
$OpenBSD: PROTOCOL,v 1.55 2024/01/08 05:05:15 djm Exp $

PROTOCOL.agent

+2-2
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ with private keys as they are loaded from a PKCS#11 token.
9191
bool certs_only
9292
string certsblob
9393

94-
Where "certsblob" constists of one or more certificates encoded as public
94+
Where "certsblob" consists of one or more certificates encoded as public
9595
key blobs:
9696

9797
string[] certificates
@@ -112,4 +112,4 @@ A SSH_AGENTC_ADD_SMARTCARD_KEY_CONSTRAINED will return SSH_AGENT_SUCCESS
112112
if any key (plain private or certificate) was successfully loaded, or
113113
SSH_AGENT_FAILURE if no key was loaded.
114114

115-
$OpenBSD: PROTOCOL.agent,v 1.21 2023/12/18 14:46:56 djm Exp $
115+
$OpenBSD: PROTOCOL.agent,v 1.22 2023/12/20 00:06:25 jsg Exp $

PROTOCOL.mux

+1-3
Original file line numberDiff line numberDiff line change
@@ -188,8 +188,6 @@ For dynamically allocated listen port the server replies with
188188

189189
7. Requesting closure of port forwards
190190

191-
Note: currently unimplemented (server will always reply with MUX_S_FAILURE).
192-
193191
A client may request the master to close a port forward:
194192

195193
uint32 MUX_C_CLOSE_FWD
@@ -295,4 +293,4 @@ XXX session inspection via master
295293
XXX signals via mux request
296294
XXX list active connections via mux
297295

298-
$OpenBSD: PROTOCOL.mux,v 1.13 2022/01/01 01:55:30 jsg Exp $
296+
$OpenBSD: PROTOCOL.mux,v 1.14 2024/01/08 05:11:18 djm Exp $

README

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
See https://www.openssh.com/releasenotes.html#9.6p1 for the release
1+
See https://www.openssh.com/releasenotes.html#9.7p1 for the release
22
notes.
33

44
Please read https://www.openssh.com/report.html for bug reporting

README.platform

+5-4
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,12 @@ Darwin does not provide a tun(4) driver required for OpenSSH-based
5353
virtual private networks. The BSD manpage still exists, but the driver
5454
has been removed in recent releases of Darwin and MacOS X.
5555

56-
Nevertheless, tunnel support is known to work with Darwin 8 and
57-
MacOS X 10.4 in Point-to-Point (Layer 3) and Ethernet (Layer 2) mode
58-
using a third party driver. More information is available at:
59-
http://www-user.rhrk.uni-kl.de/~nissler/tuntap/
56+
Tunnel support is known to work with Darwin 8 and MacOS X 10.4 in
57+
Point-to-Point (Layer 3) and Ethernet (Layer 2) mode using a third
58+
party driver. More information is available at:
59+
https://tuntaposx.sourceforge.net
6060

61+
Recent Darwin/MacOS X versions are likely unsupported.
6162

6263
Linux
6364
-----

0 commit comments

Comments
 (0)