Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
HardenedBSD
HardenedBSD
Commits
d46065df
Commit
d46065df
authored
Aug 28, 2018
by
Dag-Erling Smørgrav
Browse files
Vendor import of OpenSSH 7.8p1.
parent
3d0e4200
Changes
201
Expand all
Hide whitespace changes
Inline
Side-by-side
.depend
View file @
d46065df
This source diff could not be displayed because it is too large. You can
view the blob
instead.
.skipped-commit-ids
View file @
d46065df
...
...
@@ -2,6 +2,8 @@
a337e886a49f96701ccbc4832bed086a68abfa85 Makefile changes
f2c9feb26963615c4fece921906cf72e248b61ee more Makefile
fa728823ba21c4b45212750e1d3a4b2086fd1a62 more Makefile refactoring
1de0e85522051eb2ffa00437e1885e9d7b3e0c2e moduli update
814b2f670df75759e1581ecef530980b2b3d7e0f remove redundant make defs
Old upstream tree:
...
...
ChangeLog
View file @
d46065df
This diff is collapsed.
Click to expand it.
INSTALL
View file @
d46065df
...
...
@@ -66,13 +66,6 @@ passphrase requester. This is maintained separately at:
http://www.jmknoble.net/software/x11-ssh-askpass/
S/Key Libraries:
If you wish to use --with-skey then you will need the library below
installed. No other S/Key library is currently known to be supported.
http://www.sparc.spb.su/solaris/skey/
LibEdit:
sftp supports command-line editing via NetBSD's libedit. If your platform
...
...
@@ -184,9 +177,6 @@ it if lastlog is installed in a different place.
--with-osfsia, --without-osfsia will enable or disable OSF1's Security
Integration Architecture. The default for OSF1 machines is enable.
--with-skey=PATH will enable S/Key one time password support. You will
need the S/Key libraries and header files installed for this to work.
--with-md5-passwords will enable the use of MD5 passwords. Enable this
if your operating system uses MD5 passwords and the system crypt() does
not support them directly (see the crypt(3/3c) man page). If enabled, the
...
...
@@ -220,7 +210,7 @@ If you need to pass special options to the compiler or linker, you
can specify these as environment variables before running ./configure.
For example:
CFLAGS="-O
-m486
" LDFLAGS="-s" LIBS="-lrubbish"
LD="/usr/foo/ld"
./configure
CC="/usr/foo/cc"
CFLAGS="-O" LDFLAGS="-s" LIBS="-lrubbish" ./configure
3. Configuration
----------------
...
...
Makefile.in
View file @
d46065df
# uncomment if you run a non bourne compat
a
ble shell. Ie. csh
# uncomment if you run a non bourne compat
i
ble shell. Ie. csh
#SHELL = @SH@
AUTORECONF
=
autoreconf
...
...
@@ -84,13 +84,13 @@ LIBOPENSSH_OBJS=\
${XMSS_OBJS}
LIBSSH_OBJS
=
${LIBOPENSSH_OBJS}
\
authfd.o authfile.o
bufaux.o bufbn.o bufec.o buffer.o
\
authfd.o authfile.o
\
canohost.o channels.o cipher.o cipher-aes.o cipher-aesctr.o
\
cipher-ctr.o cleanup.o
\
compat.o crc32.o fatal.o hostfile.o
\
log.o match.o moduli.o nchan.o packet.o opacket.o
\
readpass.o ttymodes.o xmalloc.o addrmatch.o
\
atomicio.o
key.o
dispatch.o mac.o
uidswap.o
uuencode.o misc.o utf8.o
\
atomicio.o dispatch.o mac.o uuencode.o misc.o utf8.o
\
monitor_fdpass.o rijndael.o ssh-dss.o ssh-ecdsa.o ssh-rsa.o dh.o
\
msg.o progressmeter.o dns.o entropy.o gss-genr.o umac.o umac128.o
\
ssh-pkcs11.o smult_curve25519_ref.o
\
...
...
@@ -110,7 +110,7 @@ SSHDOBJS=sshd.o auth-rhosts.o auth-passwd.o \
sshpty.o sshlogin.o servconf.o serverloop.o
\
auth.o auth2.o auth-options.o session.o
\
auth2-chall.o groupaccess.o
\
auth-skey.o
auth-bsdauth.o auth2-hostbased.o auth2-kbdint.o
\
auth-bsdauth.o auth2-hostbased.o auth2-kbdint.o
\
auth2-none.o auth2-passwd.o auth2-pubkey.o
\
monitor.o monitor_wrap.o auth-krb5.o
\
auth2-gss.o gss-serv.o gss-serv-krb5.o
\
...
...
@@ -118,7 +118,7 @@ SSHDOBJS=sshd.o auth-rhosts.o auth-passwd.o \
sftp-server.o sftp-common.o
\
sandbox-null.o sandbox-rlimit.o sandbox-systrace.o sandbox-darwin.o
\
sandbox-seccomp-filter.o sandbox-capsicum.o sandbox-pledge.o
\
sandbox-solaris.o
sandbox-solaris.o
uidswap.o
MANPAGES
=
moduli.5.out scp.1.out ssh-add.1.out ssh-agent.1.out ssh-keygen.1.out ssh-keyscan.1.out ssh.1.out sshd.8.out sftp-server.8.out sftp.1.out ssh-keysign.8.out ssh-pkcs11-helper.8.out sshd_config.5.out ssh_config.5.out
MANPAGES_IN
=
moduli.5 scp.1 ssh-add.1 ssh-agent.1 ssh-keygen.1 ssh-keyscan.1 ssh.1 sshd.8 sftp-server.8 sftp.1 ssh-keysign.8 ssh-pkcs11-helper.8 sshd_config.5 ssh_config.5
...
...
@@ -175,7 +175,7 @@ sshd$(EXEEXT): libssh.a $(LIBCOMPAT) $(SSHDOBJS)
$(LD)
-o
$@
$(SSHDOBJS)
$(LDFLAGS)
-lssh
-lopenbsd-compat
$(SSHDLIBS)
$(LIBS)
$(GSSLIBS)
$(K5LIBS)
scp$(EXEEXT)
:
$(LIBCOMPAT) libssh.a scp.o progressmeter.o
$(LD)
-o
$@
scp.o progressmeter.o
bufaux.o
$(LDFLAGS)
-lssh
-lopenbsd-compat
$(LIBS)
$(LD)
-o
$@
scp.o progressmeter.o
$(LDFLAGS)
-lssh
-lopenbsd-compat
$(LIBS)
ssh-add$(EXEEXT)
:
$(LIBCOMPAT) libssh.a ssh-add.o
$(LD)
-o
$@
ssh-add.o
$(LDFLAGS)
-lssh
-lopenbsd-compat
$(LIBS)
...
...
@@ -186,8 +186,8 @@ ssh-agent$(EXEEXT): $(LIBCOMPAT) libssh.a ssh-agent.o ssh-pkcs11-client.o
ssh-keygen$(EXEEXT)
:
$(LIBCOMPAT) libssh.a ssh-keygen.o
$(LD)
-o
$@
ssh-keygen.o
$(LDFLAGS)
-lssh
-lopenbsd-compat
$(LIBS)
ssh-keysign$(EXEEXT)
:
$(LIBCOMPAT) libssh.a ssh-keysign.o readconf.o
$(LD)
-o
$@
ssh-keysign.o readconf.o
$(LDFLAGS)
-lssh
-lopenbsd-compat
$(LIBS)
ssh-keysign$(EXEEXT)
:
$(LIBCOMPAT) libssh.a ssh-keysign.o readconf.o
uidswap.o
$(LD)
-o
$@
ssh-keysign.o readconf.o
uidswap.o
$(LDFLAGS)
-lssh
-lopenbsd-compat
$(LIBS)
ssh-pkcs11-helper$(EXEEXT)
:
$(LIBCOMPAT) libssh.a ssh-pkcs11-helper.o ssh-pkcs11.o
$(LD)
-o
$@
ssh-pkcs11-helper.o ssh-pkcs11.o
$(LDFLAGS)
-lssh
-lopenbsd-compat
-lssh
-lopenbsd-compat
$(LIBS)
...
...
@@ -230,6 +230,7 @@ clean: regressclean
rm
-f
*
.o
*
.a
$(TARGETS)
logintest config.cache config.log
rm
-f
*
.out core survey
rm
-f
regress/check-perm
$(EXEEXT)
rm
-f
regress/mkdtemp
$(EXEEXT)
rm
-f
regress/unittests/test_helper/
*
.a
rm
-f
regress/unittests/test_helper/
*
.o
rm
-f
regress/unittests/sshbuf/
*
.o
...
...
@@ -258,6 +259,8 @@ distclean: regressclean
rm
-f
Makefile buildpkg.sh config.h config.status
rm
-f
survey.sh openbsd-compat/regress/Makefile
*
~
rm
-rf
autom4te.cache
rm
-f
regress/check-perm
rm
-f
regress/mkdtemp
rm
-f
regress/unittests/test_helper/
*
.a
rm
-f
regress/unittests/test_helper/
*
.o
rm
-f
regress/unittests/sshbuf/
*
.o
...
...
@@ -276,7 +279,8 @@ distclean: regressclean
rm
-f
regress/unittests/match/test_match
rm
-f
regress/unittests/utf8/
*
.o
rm
-f
regress/unittests/utf8/test_utf8
rm
-f
regress/unittests/misc/kexfuzz
rm
-f
regress/misc/kexfuzz/
*
.o
rm
-f
regress/misc/kexfuzz
(
cd
openbsd-compat
&&
$(MAKE)
distclean
)
if
test
-d
pkg
;
then
\
rm
-fr
pkg
;
\
...
...
@@ -459,6 +463,10 @@ regress/check-perm$(EXEEXT): $(srcdir)/regress/check-perm.c $(REGRESSLIBS)
$(CC)
$(CFLAGS)
$(CPPFLAGS)
-o
$@
$(srcdir)
/regress/check-perm.c
\
$(LDFLAGS)
-lssh
-lopenbsd-compat
-lssh
-lopenbsd-compat
$(LIBS)
regress/mkdtemp$(EXEEXT)
:
$(srcdir)/regress/mkdtemp.c $(REGRESSLIBS)
$(CC)
$(CFLAGS)
$(CPPFLAGS)
-o
$@
$(srcdir)
/regress/mkdtemp.c
\
$(LDFLAGS)
-lssh
-lopenbsd-compat
-lssh
-lopenbsd-compat
$(LIBS)
UNITTESTS_TEST_HELPER_OBJS
=
\
regress/unittests/test_helper/test_helper.o
\
regress/unittests/test_helper/fuzz.o
...
...
@@ -567,6 +575,7 @@ regress-binaries: regress/modpipe$(EXEEXT) \
regress/setuid-allowed$(EXEEXT)
\
regress/netcat$(EXEEXT)
\
regress/check-perm$(EXEEXT)
\
regress/mkdtemp$(EXEEXT)
\
regress/unittests/sshbuf/test_sshbuf$(EXEEXT)
\
regress/unittests/sshkey/test_sshkey$(EXEEXT)
\
regress/unittests/bitmap/test_bitmap$(EXEEXT)
\
...
...
@@ -577,8 +586,6 @@ regress-binaries: regress/modpipe$(EXEEXT) \
regress/unittests/utf8/test_utf8$(EXEEXT)
\
regress/misc/kexfuzz/kexfuzz$(EXEEXT)
REGRESSTMP
=
"
$(PWD)
/regress"
tests interop-tests t-exec unit
:
regress-prep regress-binaries $(TARGETS)
BUILDDIR
=
`
pwd
`
;
\
TEST_SSH_SCP
=
"
$
${BUILDDIR}
/scp"
;
\
...
...
@@ -602,7 +609,7 @@ tests interop-tests t-exec unit: regress-prep regress-binaries $(TARGETS)
.OBJDIR
=
"
$
${BUILDDIR}
/regress"
\
.CURDIR
=
"
`
pwd
`
"
\
BUILDDIR
=
"
$
${BUILDDIR}
"
\
OBJ
=
"
$
(REGRESSTMP)
"
\
OBJ
=
"
$
${BUILDDIR}
/regress/
"
\
PATH
=
"
$
${BUILDDIR}
:
$
${PATH}
"
\
TEST_ENV
=
MALLOC_OPTIONS
=
"@TEST_MALLOC_OPTIONS@"
\
TEST_MALLOC_OPTIONS
=
"@TEST_MALLOC_OPTIONS@"
\
...
...
OVERVIEW
View file @
d46065df
...
...
@@ -23,9 +23,8 @@ these programs.
- These provide an arbitrary size buffer, where data can be appended.
Data can be consumed from either end. The code is used heavily
throughout ssh. The basic buffer manipulation functions are in
buffer.c (header buffer.h), and additional code to manipulate specific
data types is in bufaux.c.
throughout ssh. The buffer manipulation functions are in
sshbuf*.c (header sshbuf.h).
Compression Library
...
...
@@ -62,7 +61,7 @@ these programs.
code in packet.c does not concern itself with packet types or their
execution; it contains code to build packets, to receive them and
extract data from them, and the code to compress and/or encrypt
packets.
CRC code comes from crc32.c.
packets.
- The code in packet.c calls the buffer manipulation routines
(buffer.c, bufaux.c), compression routines (zlib), and the
...
...
@@ -106,12 +105,6 @@ these programs.
calls client_loop in clientloop.c. This does the real work for
the session.
- The client is suid root. It tries to temporarily give up this
rights while reading the configuration data. The root
privileges are only used to make the connection (from a
privileged socket). Any extra privileges are dropped before
calling ssh_login.
Pseudo-tty manipulation and tty modes
- Code to allocate and use a pseudo tty is in pty.c. Code to
...
...
@@ -165,4 +158,4 @@ these programs.
uidswap.c uid-swapping
xmalloc.c "safe" malloc routines
$OpenBSD: OVERVIEW,v 1.1
2
201
5
/07/
08 19:01:15 markus
Exp $
$OpenBSD: OVERVIEW,v 1.1
4
201
8
/07/
27 03:55:22 dtucker
Exp $
PROTOCOL
View file @
d46065df
...
...
@@ -428,7 +428,7 @@ The values of the f_flag bitmask are as follows:
Both the "statvfs@openssh.com" and "fstatvfs@openssh.com" extensions are
advertised in the SSH_FXP_VERSION hello with version "2".
10
. sftp: Extension request "hardlink@openssh.com"
3.5
. sftp: Extension request "hardlink@openssh.com"
This request is for creating a hard link to a regular file. This
request is implemented as a SSH_FXP_EXTENDED request with the
...
...
@@ -444,7 +444,7 @@ link(oldpath, newpath) and will respond with a SSH_FXP_STATUS message.
This extension is advertised in the SSH_FXP_VERSION hello with version
"1".
10
. sftp: Extension request "fsync@openssh.com"
3.6
. sftp: Extension request "fsync@openssh.com"
This request asks the server to call fsync(2) on an open file handle.
...
...
@@ -458,4 +458,35 @@ respond with a SSH_FXP_STATUS message.
This extension is advertised in the SSH_FXP_VERSION hello with version
"1".
$OpenBSD: PROTOCOL,v 1.32 2018/02/19 00:55:02 djm Exp $
4. Miscellaneous changes
4.1 Public key format
OpenSSH public keys, as generated by ssh-keygen(1) and appearing in
authorized_keys files, are formatted as a single line of text consisting
of the public key algorithm name followed by a base64-encoded key blob.
The public key blob (before base64 encoding) is the same format used for
the encoding of public keys sent on the wire: as described in RFC4253
section 6.6 for RSA and DSA keys, RFC5656 section 3.1 for ECDSA keys
and the "New public key formats" section of PROTOCOL.certkeys for the
OpenSSH certificate formats.
4.2 Private key format
OpenSSH private keys, as generated by ssh-keygen(1) use the format
described in PROTOCOL.key by default. As a legacy option, PEM format
(RFC7468) private keys are also supported for RSA, DSA and ECDSA keys
and were the default format before OpenSSH 7.8.
4.3 KRL format
OpenSSH supports a compact format for Key Revocation Lists (KRLs). This
format is described in the PROTOCOL.krl file.
4.4 Connection multiplexing
OpenSSH's connection multiplexing uses messages as described in
PROTOCOL.mux over a Unix domain socket for communications between a
master instance and later clients.
$OpenBSD: PROTOCOL,v 1.35 2018/08/10 00:44:01 djm Exp $
PROTOCOL.certkeys
View file @
d46065df
...
...
@@ -25,6 +25,10 @@ raw user keys. The ssh client will support automatic verification of
acceptance of certified host keys, by adding a similar ability to
specify CA keys in ~/.ssh/known_hosts.
All certificate types include certification information along with the
public key that is used to sign challenges. In OpenSSH, ssh-keygen
performs the CA signing operation.
Certified keys are represented using new key types:
ssh-rsa-cert-v01@openssh.com
...
...
@@ -33,9 +37,17 @@ Certified keys are represented using new key types:
ecdsa-sha2-nistp384-cert-v01@openssh.com
ecdsa-sha2-nistp521-cert-v01@openssh.com
These include certification information along with the public key
that is used to sign challenges. ssh-keygen performs the CA signing
operation.
Two additional types exist for RSA certificates to force use of
SHA-2 signatures (SHA-256 and SHA-512 respectively):
rsa-sha2-256-cert-v01@openssh.com
rsa-sha2-512-cert-v01@openssh.com
These RSA/SHA-2 types should not appear in keys at rest or transmitted
on their wire, but do appear in a SSH_MSG_KEXINIT's host-key algorithms
field or in the "public key algorithm name" field of a "publickey"
SSH_USERAUTH_REQUEST to indicate that the signature will use the
specified algorithm.
Protocol extensions
-------------------
...
...
@@ -174,7 +186,7 @@ certificate. Each represents a time in seconds since 1970-01-01
valid after <= current time < valid before
critic
i
al options is a set of zero or more key options encoded as
critical options is a set of zero or more key options encoded as
below. All such options are "critical" in the sense that an implementation
must refuse to authorise a key that has an unrecognised option.
...
...
@@ -291,4 +303,4 @@ permit-user-rc empty Flag indicating that execution of
of this script will not be permitted if
this option is not present.
$OpenBSD: PROTOCOL.certkeys,v 1.1
3
201
7/11/03 02:32:19
djm Exp $
$OpenBSD: PROTOCOL.certkeys,v 1.1
5
201
8/07/03 11:39:54
djm Exp $
PROTOCOL.chacha20poly1305
View file @
d46065df
...
...
@@ -16,7 +16,7 @@ that computes a 128 bit integrity tag given a message and a single-use
The chacha20-poly1305@openssh.com combines these two primitives into an
authenticated encryption mode. The construction used is based on that
proposed for TLS by Adam Langley in [3], but differs in the layout of
data passed to the MAC and in the addition of encyption of the packet
data passed to the MAC and in the addition of enc
r
yption of the packet
lengths.
Negotiation
...
...
@@ -103,5 +103,5 @@ References
[3] "ChaCha20 and Poly1305 based Cipher Suites for TLS", Adam Langley
http://tools.ietf.org/html/draft-agl-tls-chacha20poly1305-03
$OpenBSD: PROTOCOL.chacha20poly1305,v 1.
3
201
6
/0
5/03 13
:10:
2
4 djm Exp $
$OpenBSD: PROTOCOL.chacha20poly1305,v 1.
4
201
8
/0
4/10 00
:10:4
9
djm Exp $
PROTOCOL.krl
View file @
d46065df
...
...
@@ -145,7 +145,7 @@ This section may appear multiple times.
5. KRL signature sections
The KRL_SECTION_SIGNATURE section serves a different purpose to the
prece
e
ding ones: to provide cryptographic authentication of a KRL that
preceding ones: to provide cryptographic authentication of a KRL that
is retrieved over a channel that does not provide integrity protection.
Its format is slightly different to the previously-described sections:
in order to simplify the signature generation, it includes as a "body"
...
...
@@ -166,4 +166,4 @@ Implementations that retrieve KRLs over untrusted channels must verify
signatures. Signature sections are optional for KRLs distributed by
trusted means.
$OpenBSD: PROTOCOL.krl,v 1.
3
201
5
/0
1/3
0 0
1
:10:
33
djm Exp $
$OpenBSD: PROTOCOL.krl,v 1.
4
201
8
/0
4/1
0 0
0
:10:
49
djm Exp $
README
View file @
d46065df
See https://www.openssh.com/releasenotes.html#7.
7
p1 for the release notes.
See https://www.openssh.com/releasenotes.html#7.
8
p1 for the release notes.
Please read https://www.openssh.com/report.html for bug reporting
instructions and note that we do not use Github for bug reporting or
...
...
README.platform
View file @
d46065df
...
...
@@ -80,7 +80,7 @@ added to /etc/security/audit_event:
32800:AUE_openssh:OpenSSH login:lo
The BSM audit event range available for third party TCB applications is
32768 - 65535. Event number 32800 has been cho
o
sen for AUE_openssh.
32768 - 65535. Event number 32800 has been chosen for AUE_openssh.
There is no official registry of 3rd party event numbers, so if this
number is already in use on your system, you may change it at build time
by configure'ing --with-cflags=-DAUE_openssh=32801 then rebuilding.
...
...
TODO
View file @
d46065df
...
...
@@ -35,7 +35,7 @@ Programming:
- Use different PAM service name for kbdint vs regular auth (suggest from
Solar Designer)
- Ability to select which ChallengeResponseAuthentications may be used
and order to try them in e.g. "ChallengeResponseAuthentication
skey,
pam"
and order to try them in e.g. "ChallengeResponseAuthentication pam"
- Complete Tru64 SIA support
- It looks like we could merge it into the password auth code to cut down
...
...
@@ -57,10 +57,10 @@ Clean up configure/makefiles:
- Replace the whole u_intXX_t evilness in acconfig.h with something better???
- Do it in configure.ac
- Consider splitting the u_intXX_t test for sys/bitype.h into sep
e
rate test
- Consider splitting the u_intXX_t test for sys/bitype.h into sep
a
rate test
to allow people to (right/wrongfully) link against Bind directly.
- Consider splitting configure.ac into sep
e
rate files which do logically
- Consider splitting configure.ac into sep
a
rate files which do logically
similar tests. E.g move all the type detection stuff into one file,
entropy related stuff into another.
...
...
aclocal.m4
View file @
d46065df
...
...
@@ -25,7 +25,7 @@ int main(int argc, char **argv) {
}
]])],
[
if
`grep
-i "unrecognized option" conftest.err >/dev/null
`
if
$ac_cv_path_EGREP
-i "unrecognized option
|warning.*ignored
" conftest.err >/dev/null
then
AC_MSG_RESULT([no])
CFLAGS="$saved_CFLAGS"
...
...
@@ -63,7 +63,7 @@ int main(int argc, char **argv) {
}
]])],
[
if
`grep
-i "unrecognized option" conftest.err >/dev/null
`
if
$ac_cv_path_EGREP
-i "unrecognized option
|warning.*ignored
" conftest.err >/dev/null
then
AC_MSG_RESULT([no])
CFLAGS="$saved_CFLAGS"
...
...
@@ -100,8 +100,15 @@ int main(int argc, char **argv) {
exit(0);
}
]])],
[ AC_MSG_RESULT([yes])
LDFLAGS="$saved_LDFLAGS $_define_flag"],
[
if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
then
AC_MSG_RESULT([no])
LDFLAGS="$saved_LDFLAGS"
else
AC_MSG_RESULT([yes])
LDFLAGS="$saved_LDFLAGS $_define_flag"
fi ],
[ AC_MSG_RESULT([no])
LDFLAGS="$saved_LDFLAGS" ]
)
...
...
addrmatch.c
View file @
d46065df
/* $OpenBSD: addrmatch.c,v 1.1
3
201
6
/0
9/21 16:55:42
djm Exp $ */
/* $OpenBSD: addrmatch.c,v 1.1
4
201
8
/0
7/31 03:07:24
djm Exp $ */
/*
* Copyright (c) 2004-2008 Damien Miller <djm@mindrot.org>
...
...
@@ -205,25 +205,24 @@ addr_cmp(const struct xaddr *a, const struct xaddr *b)
static
int
addr_pton
(
const
char
*
p
,
struct
xaddr
*
n
)
{
struct
addrinfo
hints
,
*
ai
;
struct
addrinfo
hints
,
*
ai
=
NULL
;
int
ret
=
-
1
;
memset
(
&
hints
,
'\0'
,
sizeof
(
hints
));
hints
.
ai_flags
=
AI_NUMERICHOST
;
if
(
p
==
NULL
||
getaddrinfo
(
p
,
NULL
,
&
hints
,
&
ai
)
!=
0
)
return
-
1
;
goto
out
;
if
(
ai
==
NULL
||
ai
->
ai_addr
==
NULL
)
return
-
1
;
if
(
n
!=
NULL
&&
addr_sa_to_xaddr
(
ai
->
ai_addr
,
ai
->
ai_addrlen
,
n
)
==
-
1
)
{
goto
out
;
if
(
n
!=
NULL
&&
addr_sa_to_xaddr
(
ai
->
ai_addr
,
ai
->
ai_addrlen
,
n
)
==
-
1
)
goto
out
;
/* success */
ret
=
0
;
out:
if
(
ai
!=
NULL
)
freeaddrinfo
(
ai
);
return
-
1
;
}
freeaddrinfo
(
ai
);
return
0
;
return
ret
;
}
/*
...
...
audit-bsm.c
View file @
d46065df
...
...
@@ -49,7 +49,6 @@
#include
"ssh.h"
#include
"log.h"
#include
"key.h"
#include
"hostfile.h"
#include
"auth.h"
#include
"xmalloc.h"
...
...
audit.c
View file @
d46065df
...
...
@@ -26,12 +26,12 @@
#include
<stdarg.h>
#include
<string.h>
#include
<unistd.h>
#ifdef SSH_AUDIT_EVENTS
#include
"audit.h"
#include
"log.h"
#include
"key.h"
#include
"hostfile.h"
#include
"auth.h"
...
...
auth-bsdauth.c
View file @
d46065df
/* $OpenBSD: auth-bsdauth.c,v 1.1
4
201
5/10/20 23:24:25 mmcc
Exp $ */
/* $OpenBSD: auth-bsdauth.c,v 1.1
5
201
8/07/09 21:35:50 markus
Exp $ */
/*
* Copyright (c) 2001 Markus Friedl. All rights reserved.
*
...
...
@@ -33,11 +33,11 @@
#ifdef BSD_AUTH
#include
"xmalloc.h"
#include
"key.h"
#include
"sshkey.h"
#include
"sshbuf.h"
#include
"hostfile.h"
#include
"auth.h"
#include
"log.h"
#include
"buffer.h"
#ifdef GSSAPI
#include
"ssh-gss.h"
#endif
...
...
auth-krb5.c
View file @
d46065df
/* $OpenBSD: auth-krb5.c,v 1.2
2
201
6
/0
5
/0
4 14:22:33
markus Exp $ */
/* $OpenBSD: auth-krb5.c,v 1.2
3
201
8
/0
7
/0
9 21:35:50
markus Exp $ */
/*
* Kerberos v5 authentication and ticket-passing routines.
*
...
...
@@ -38,11 +38,11 @@
#include
"ssh.h"
#include
"packet.h"
#include
"log.h"
#include
"buffer.h"
#include
"sshbuf.h"
#include
"sshkey.h"
#include
"misc.h"
#include
"servconf.h"
#include
"uidswap.h"
#include
"key.h"
#include
"hostfile.h"
#include
"auth.h"
...
...
auth-options.c
View file @
d46065df
/* $OpenBSD: auth-options.c,v 1.
7
8 2018/0
3
/1
4
0
5:35
:4
0
djm Exp $ */
/* $OpenBSD: auth-options.c,v 1.8
3
2018/0
6
/1
9
0
2:59
:4
1
djm Exp $ */
/*
* Copyright (c) 2018 Damien Miller <djm@mindrot.org>
*
...
...
@@ -283,6 +283,10 @@ sshauthopt_free(struct sshauthopt *opts)
free
(
opts
->
permitopen
[
i
]);
free
(
opts
->
permitopen
);
for
(
i
=
0
;
i
<
opts
->
npermitlisten
;
i
++
)
free
(
opts
->
permitlisten
[
i
]);
free
(
opts
->
permitlisten
);
explicit_bzero
(
opts
,
sizeof
(
*
opts
));
free
(
opts
);
}
...
...
@@ -304,10 +308,82 @@ sshauthopt_new_with_keys_defaults(void)
return
ret
;
}
/*
* Parse and record a permitopen/permitlisten directive.
* Return 0 on success. Return -1 on failure and sets *errstrp to error reason.
*/
static
int
handle_permit
(
const
char
**
optsp
,
int
allow_bare_port
,
char
***
permitsp
,
size_t
*
npermitsp
,
const
char
**
errstrp
)
{
char
*
opt
,
*
tmp
,
*
cp
,
*
host
,
**
permits
=
*
permitsp
;
size_t
npermits
=
*
npermitsp
;
const
char
*
errstr
=
"unknown error"
;
if
(
npermits
>
INT_MAX
)
{
*
errstrp
=
"too many permission directives"
;
return
-
1
;
}
if
((
opt
=
opt_dequote
(
optsp
,
&
errstr
))
==
NULL
)
{
return
-
1
;
}
if
(
allow_bare_port
&&
strchr
(
opt
,
':'
)
==
NULL
)
{
/*
* Allow a bare port number in permitlisten to indicate a
* listen_host wildcard.
*/
if
(
asprintf
(
&
tmp
,
"*:%s"
,
opt
)
<
0
)
{
*
errstrp
=
"memory allocation failed"
;
return
-
1
;
}
free
(
opt
);
opt
=
tmp
;
}
if
((
tmp
=
strdup
(
opt
))
==
NULL
)
{
free
(
opt
);
*
errstrp
=
"memory allocation failed"
;
return
-
1
;
}
cp
=
tmp
;
/* validate syntax before recording it. */
host
=
hpdelim
(
&
cp
);
if
(
host
==
NULL
||
strlen
(
host
)
>=
NI_MAXHOST
)
{
free
(
tmp
);
free
(
opt
);
*
errstrp
=
"invalid permission hostname"
;
return
-
1
;
}
/*
* don't want to use permitopen_port to avoid
* dependency on channels.[ch] here.
*/
if
(
cp
==
NULL
||
(
strcmp
(
cp
,
"*"
)
!=
0
&&
a2port
(
cp
)
<=
0
))
{
free
(
tmp
);
free
(
opt
);
*
errstrp
=
"invalid permission port"
;
return
-
1
;
}
/* XXX - add streamlocal support */
free
(
tmp
);
/* Record it */
if
((
permits
=
recallocarray
(
permits
,
npermits
,
npermits
+
1
,
sizeof
(
*
permits
)))
==
NULL
)
{
free
(
opt
);
/* NB. don't update *permitsp if alloc fails */
*
errstrp
=
"memory allocation failed"
;
return
-
1
;
}
permits
[
npermits
++
]
=
opt
;
*
permitsp
=
permits
;
*
npermitsp
=
npermits
;
return
0
;
}
struct
sshauthopt
*
sshauthopt_parse
(
const
char
*
opts
,
const
char
**
errstrp
)
{
char
**
oarray
,
*
opt
,
*
cp
,
*
tmp
,
*
host
;
char
**
oarray
,
*
opt
,
*
cp
,
*
tmp
;
int
r
;
struct
sshauthopt
*
ret
=
NULL
;
const
char
*
errstr
=
"unknown error"
;
...
...
@@ -394,7 +470,7 @@ sshauthopt_parse(const char *opts, const char **errstrp)
goto
fail
;
}
for
(
cp
=
opt
;
cp
<
tmp
;
cp
++
)
{
if
(
!
isalnum
((
u_char
)
*
cp
))
{
if
(
!
isalnum
((
u_char
)
*
cp
)
&&
*
cp
!=
'_'
)
{
free
(
opt
);
errstr
=
"invalid environment string"
;
goto
fail
;
...
...
@@ -410,48 +486,13 @@ sshauthopt_parse(const char *opts, const char **errstrp)
}
ret
->
env
[
ret
->
nenv
++
]
=
opt
;
}
else
if
(
opt_match
(
&
opts
,
"permitopen"
))
{
if
(
ret
->
npermitopen
>
INT_MAX
)
{
errstr
=
"too many permitopens"
;
goto
fail
;
}
if
((
opt
=
opt_dequote
(
&
opts
,
&
errstr
))
==
NULL
)
goto
fail
;
if
((
tmp
=
strdup
(
opt
))
==
NULL
)
{
free
(
opt
);
goto
alloc_fail
;
}
cp
=
tmp
;
/* validate syntax of permitopen before recording it. */
host
=
hpdelim
(
&
cp
);
if
(
host
==
NULL
||
strlen
(
host
)
>=
NI_MAXHOST
)
{
free
(
tmp
);
free
(
opt
);
errstr
=
"invalid permitopen hostname"
;
if
(
handle_permit
(
&
opts
,
0
,
&
ret
->
permitopen
,