mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 17:09:10 -07:00
net-misc/openssh: Version bump to 7.9_p1
Signed-off-by: Patrick McLean <chutzpah@gentoo.org> Package-Manager: Portage-2.3.51, Repoman-2.3.11
This commit is contained in:
committed by
Patrick McLean
parent
7021a7dc09
commit
1e31c03626
@@ -10,6 +10,9 @@ DIST openssh-7.7p1.tar.gz 1536900 BLAKE2B 7aee360f2cea5bfa3f8426fcbd66fde2568f05
|
||||
DIST openssh-7.8p1+x509-11.4.diff.gz 536597 BLAKE2B 18593135d0d4010f40a6e0c99a6a2e9fb4ca98d00b4940be5cb547fcb647adc9663245274d4e792bcc7c2ec49accaceb7c3c489707bbb7aaeed260dd2e0eb1c3 SHA512 b95d46201626797f197c5aa8488b0543d2c7c5719b99fadd94ef2c888a96c6a7b649527b78b6d6014d953ae57e05ecf116192cf498687db8cb7669c3998deecc
|
||||
DIST openssh-7.8p1-sctp-1.1.patch.xz 7548 BLAKE2B d74010028f097812f554f9e788aa5e46d75c12edbef18aaeaa9866665025bdad04a1a028cc862d11d718208c1b63862780840332536a535bb2eaff7661c966ef SHA512 c084f6b2cfa9cb70f46ecc9edfce6e2843cd4cd5e36ac870f5ceaaedd056ba9aa2ce8769418239ad0fe5e7350573397a222b6525a029f4492feb7b144ee22aa3
|
||||
DIST openssh-7.8p1.tar.gz 1548026 BLAKE2B 938428408596d24d497f245e3662a0cff3d462645683bf75cd29a0ea56fa6c280e7fa866bedf0928dd5bc4085b82d5a4ce74b7eea0b45b86f879b69f74db1642 SHA512 8e5b0c8682a9243e4e8b7c374ec989dccd1a752eb6f84e593b67141e8b23dcc8b9a7322b1f7525d18e2ce8830a767d0d9793f997486339db201a57986b910705
|
||||
DIST openssh-7.9p1+x509-11.5.diff.gz 594995 BLAKE2B 2c44df224e4114da0473cbbdfdcc4bd84b0b0235f80b43517d70fe1071f219d2631f784015ab1470eebcf8f3b6b5f8744862acebb22f217c6e76f79e6a49c099 SHA512 4d2fd950dee9721add822fdb54ff8c20fd18da85081ce8a2bd2a1050d3ff7900a7213782c479691de9dcfe4e2f91061e124d34b365edb3831e8bfe4aef3744f9
|
||||
DIST openssh-7.9p1-sctp-1.1.patch.xz 7552 BLAKE2B 0eeda7c8a50c0c98433b5ee0734b9f79043067be376a9ca724d574d4a595c3f7aed0626342300467b73ad9003392e22fda8abe778158ba5be5a50a57eeef79f8 SHA512 6cad32c40dd3901c4eadb0c463a35ec2d901e61220c333d3df7759f672259f66fc83e2b1ace8b0ef84cbc1a65397f00f9c670ffa23726d8309fa5060512d2c21
|
||||
DIST openssh-7.9p1.tar.gz 1565384 BLAKE2B de15795e03d33d4f9fe4792f6b14500123230b6c00c1e5bd7207bb6d6bf6df0b2e057c1b1de0fee709f58dd159203fdd69fe1473118a6baedebaa0c1c4c55b59 SHA512 0412c9c429c9287f0794023951469c8e6ec833cdb55821bfa0300dd90d0879ff60484f620cffd93372641ab69bf0b032c2d700ccc680950892725fb631b7708e
|
||||
DIST openssh-7_8_P1-hpn-AES-CTR-14.16.diff 29231 BLAKE2B e25877c5e22f674e6db5a0bc107e5daa2509fe762fb14ce7bb2ce9a115e8177a93340c1d19247b6c2c854b7e1f9ae9af9fd932e5fa9c0a6b2ba438cd11a42991 SHA512 1867fb94c29a51294a71a3ec6a299757565a7cda5696118b0b346ed9c78f2c81bb1b888cff5e3418776b2fa277a8f070c5eb9327bb005453e2ffd72d35cdafa7
|
||||
DIST openssh-7_8_P1-hpn-DynWinNoneSwitch-14.16.diff 43356 BLAKE2B 776fa140d64a16c339b46a7c773258d2f4fe44e48b16abccad1a8757a51cb6362722fc5f42c39159af12849f5c88cf574de64815085c97157e16653f18d4909b SHA512 53f2752b7aa02719c8dfe0fe0ef16e874101ba2ba87924aa1122cd445ece218ca09c22abaa3377307f25d459579bc28d3854e2402c71b794db65d58cdd1ebc08
|
||||
DIST openssh-lpk-7.5p1-0.3.14.patch.xz 17040 BLAKE2B 5b2204316dd244bb8dd11db50d5bc3a194e2cc4b64964a2d3df68bbe54c53588f15fc5176dbc3811e929573fa3e41cf91f412aa2513bb9a4b6ed02c2523c1e24 SHA512 9ce5d7e5d831c972f0f866b686bf93a048a03979ab38627973f5491eeeaa45f9faab0520b3a7ed90a13a67213fdc9cd4cf11e423acad441ea91b71037c8b435b
|
||||
|
||||
28
net-misc/openssh/files/openssh-7.9_p1-X509-glue.patch
Normal file
28
net-misc/openssh/files/openssh-7.9_p1-X509-glue.patch
Normal file
@@ -0,0 +1,28 @@
|
||||
--- a/openssh-7.9p1+x509-11.5.diff 2018-10-19 11:41:13.791285390 -0700
|
||||
+++ b/openssh-7.9p1+x509-11.5.diff 2018-10-19 11:45:42.584694215 -0700
|
||||
@@ -44045,7 +44045,7 @@
|
||||
ENGINE_register_all_complete();
|
||||
+#endif
|
||||
|
||||
--#if OPENSSL_VERSION_NUMBER < 0x10001000L
|
||||
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||
+ /* OPENSSL_config will load buildin engines and engines
|
||||
+ * specified in configuration file, i.e. method call
|
||||
+ * ENGINE_load_builtin_engines. Latter is only for
|
||||
@@ -77691,16 +77691,6 @@
|
||||
setlocale(LC_CTYPE, "POSIX.UTF-8") != NULL))
|
||||
return;
|
||||
setlocale(LC_CTYPE, "C");
|
||||
-diff -ruN openssh-7.9p1/version.h openssh-7.9p1+x509-11.5/version.h
|
||||
---- openssh-7.9p1/version.h 2018-10-17 03:01:20.000000000 +0300
|
||||
-+++ openssh-7.9p1+x509-11.5/version.h 2018-10-19 19:07:00.000000000 +0300
|
||||
-@@ -2,5 +2,4 @@
|
||||
-
|
||||
- #define SSH_VERSION "OpenSSH_7.9"
|
||||
-
|
||||
--#define SSH_PORTABLE "p1"
|
||||
--#define SSH_RELEASE SSH_VERSION SSH_PORTABLE
|
||||
-+#define SSH_RELEASE PACKAGE_STRING ", " SSH_VERSION "p1"
|
||||
diff -ruN openssh-7.9p1/version.m4 openssh-7.9p1+x509-11.5/version.m4
|
||||
--- openssh-7.9p1/version.m4 1970-01-01 02:00:00.000000000 +0200
|
||||
+++ openssh-7.9p1+x509-11.5/version.m4 2018-10-19 18:13:58.000000000 +0300
|
||||
79
net-misc/openssh/files/openssh-7.9_p1-hpn-X509-glue.patch
Normal file
79
net-misc/openssh/files/openssh-7.9_p1-hpn-X509-glue.patch
Normal file
@@ -0,0 +1,79 @@
|
||||
--- temp/openssh-7_8_P1-hpn-AES-CTR-14.16.diff.orig 2018-09-12 15:58:57.377986085 -0700
|
||||
+++ temp/openssh-7_8_P1-hpn-AES-CTR-14.16.diff 2018-09-12 16:07:15.376711327 -0700
|
||||
@@ -4,8 +4,8 @@
|
||||
+++ b/Makefile.in
|
||||
@@ -42,7 +42,7 @@ CC=@CC@
|
||||
LD=@LD@
|
||||
- CFLAGS=@CFLAGS@
|
||||
- CPPFLAGS=-I. -I$(srcdir) @CPPFLAGS@ $(PATHS) @DEFS@
|
||||
+ CFLAGS=@CFLAGS@ $(CFLAGS_EXTRA)
|
||||
+ CPPFLAGS=-I. -I$(srcdir) @CPPFLAGS@ @LDAP_CPPFLAGS@ $(PATHS) @DEFS@
|
||||
-LIBS=@LIBS@
|
||||
+LIBS=@LIBS@ -lpthread
|
||||
K5LIBS=@K5LIBS@
|
||||
@@ -788,8 +788,8 @@
|
||||
ssh_packet_set_connection(struct ssh *ssh, int fd_in, int fd_out)
|
||||
{
|
||||
struct session_state *state;
|
||||
-- const struct sshcipher *none = cipher_by_name("none");
|
||||
-+ struct sshcipher *none = cipher_by_name("none");
|
||||
+- const struct sshcipher *none = cipher_none();
|
||||
++ struct sshcipher *none = cipher_none();
|
||||
int r;
|
||||
|
||||
if (none == NULL) {
|
||||
@@ -933,9 +933,9 @@
|
||||
/* Portable-specific options */
|
||||
sUsePAM,
|
||||
+ sDisableMTAES,
|
||||
- /* Standard Options */
|
||||
- sPort, sHostKeyFile, sLoginGraceTime,
|
||||
- sPermitRootLogin, sLogFacility, sLogLevel,
|
||||
+ /* X.509 Standard Options */
|
||||
+ sHostbasedAlgorithms,
|
||||
+ sPubkeyAlgorithms,
|
||||
@@ -626,6 +630,7 @@ static struct {
|
||||
{ "trustedusercakeys", sTrustedUserCAKeys, SSHCFG_ALL },
|
||||
{ "authorizedprincipalsfile", sAuthorizedPrincipalsFile, SSHCFG_ALL },
|
||||
--- temp/openssh-7_8_P1-hpn-DynWinNoneSwitch-14.16.diff.orig 2018-09-12 16:38:16.947447218 -0700
|
||||
+++ temp/openssh-7_8_P1-hpn-DynWinNoneSwitch-14.16.diff 2018-09-12 16:32:35.479700864 -0700
|
||||
@@ -382,7 +382,7 @@
|
||||
@@ -822,6 +822,10 @@ kex_choose_conf(struct ssh *ssh)
|
||||
int nenc, nmac, ncomp;
|
||||
u_int mode, ctos, need, dh_need, authlen;
|
||||
- int r, first_kex_follows;
|
||||
+ int r, first_kex_follows = 0;
|
||||
+ int auth_flag;
|
||||
+
|
||||
+ auth_flag = packet_authentication_state(ssh);
|
||||
@@ -1125,15 +1125,6 @@
|
||||
index a738c3a..b32dbe0 100644
|
||||
--- a/sshd.c
|
||||
+++ b/sshd.c
|
||||
-@@ -373,7 +373,7 @@ sshd_exchange_identification(struct ssh *ssh, int sock_in, int sock_out)
|
||||
- char remote_version[256]; /* Must be at least as big as buf. */
|
||||
-
|
||||
- xasprintf(&server_version_string, "SSH-%d.%d-%.100s%s%s\r\n",
|
||||
-- PROTOCOL_MAJOR_2, PROTOCOL_MINOR_2, SSH_VERSION,
|
||||
-+ PROTOCOL_MAJOR_2, PROTOCOL_MINOR_2, SSH_RELEASE,
|
||||
- *options.version_addendum == '\0' ? "" : " ",
|
||||
- options.version_addendum);
|
||||
-
|
||||
@@ -1037,6 +1037,8 @@ listen_on_addrs(struct listenaddr *la)
|
||||
int ret, listen_sock;
|
||||
struct addrinfo *ai;
|
||||
@@ -1213,14 +1204,3 @@
|
||||
# Example of overriding settings on a per-user basis
|
||||
#Match User anoncvs
|
||||
# X11Forwarding no
|
||||
-diff --git a/version.h b/version.h
|
||||
-index f1bbf00..21a70c2 100644
|
||||
---- a/version.h
|
||||
-+++ b/version.h
|
||||
-@@ -3,4 +3,5 @@
|
||||
- #define SSH_VERSION "OpenSSH_7.8"
|
||||
-
|
||||
- #define SSH_PORTABLE "p1"
|
||||
--#define SSH_RELEASE SSH_VERSION SSH_PORTABLE
|
||||
-+#define SSH_RELEASE SSH_VERSION SSH_PORTABLE SSH_HPN
|
||||
-+
|
||||
112
net-misc/openssh/files/openssh-7.9_p1-hpn-glue.patch
Normal file
112
net-misc/openssh/files/openssh-7.9_p1-hpn-glue.patch
Normal file
@@ -0,0 +1,112 @@
|
||||
--- temp/openssh-7_8_P1-hpn-DynWinNoneSwitch-14.16.diff.orig 2018-09-11 17:19:19.968420409 -0700
|
||||
+++ temp/openssh-7_8_P1-hpn-DynWinNoneSwitch-14.16.diff 2018-09-11 17:39:19.977535398 -0700
|
||||
@@ -409,18 +409,10 @@
|
||||
index dcf35e6..da4ced0 100644
|
||||
--- a/packet.c
|
||||
+++ b/packet.c
|
||||
-@@ -920,6 +920,24 @@ ssh_set_newkeys(struct ssh *ssh, int mode)
|
||||
+@@ -920,6 +920,16 @@ ssh_set_newkeys(struct ssh *ssh, int mode)
|
||||
return 0;
|
||||
}
|
||||
|
||||
-+/* this supports the forced rekeying required for the NONE cipher */
|
||||
-+int rekey_requested = 0;
|
||||
-+void
|
||||
-+packet_request_rekeying(void)
|
||||
-+{
|
||||
-+ rekey_requested = 1;
|
||||
-+}
|
||||
-+
|
||||
+/* used to determine if pre or post auth when rekeying for aes-ctr
|
||||
+ * and none cipher switch */
|
||||
+int
|
||||
@@ -434,20 +426,6 @@
|
||||
#define MAX_PACKETS (1U<<31)
|
||||
static int
|
||||
ssh_packet_need_rekeying(struct ssh *ssh, u_int outbound_packet_len)
|
||||
-@@ -946,6 +964,13 @@ ssh_packet_need_rekeying(struct ssh *ssh, u_int outbound_packet_len)
|
||||
- if (state->p_send.packets == 0 && state->p_read.packets == 0)
|
||||
- return 0;
|
||||
-
|
||||
-+ /* used to force rekeying when called for by the none
|
||||
-+ * cipher switch methods -cjr */
|
||||
-+ if (rekey_requested == 1) {
|
||||
-+ rekey_requested = 0;
|
||||
-+ return 1;
|
||||
-+ }
|
||||
-+
|
||||
- /* Time-based rekeying */
|
||||
- if (state->rekey_interval != 0 &&
|
||||
- (int64_t)state->rekey_time + state->rekey_interval <= monotime())
|
||||
diff --git a/packet.h b/packet.h
|
||||
index 170203c..f4d9df2 100644
|
||||
--- a/packet.h
|
||||
@@ -476,9 +454,9 @@
|
||||
/* Format of the configuration file:
|
||||
|
||||
@@ -166,6 +167,8 @@ typedef enum {
|
||||
- oHashKnownHosts,
|
||||
oTunnel, oTunnelDevice,
|
||||
oLocalCommand, oPermitLocalCommand, oRemoteCommand,
|
||||
+ oDisableMTAES,
|
||||
+ oTcpRcvBufPoll, oTcpRcvBuf, oHPNDisabled, oHPNBufferSize,
|
||||
+ oNoneEnabled, oNoneSwitch,
|
||||
oVisualHostKey,
|
||||
@@ -615,9 +593,9 @@
|
||||
int ip_qos_bulk; /* IP ToS/DSCP/class for bulk traffic */
|
||||
SyslogFacility log_facility; /* Facility for system logging. */
|
||||
@@ -111,7 +115,10 @@ typedef struct {
|
||||
-
|
||||
int enable_ssh_keysign;
|
||||
int64_t rekey_limit;
|
||||
+ int disable_multithreaded; /*disable multithreaded aes-ctr*/
|
||||
+ int none_switch; /* Use none cipher */
|
||||
+ int none_enabled; /* Allow none to be used */
|
||||
int rekey_interval;
|
||||
@@ -673,9 +651,9 @@
|
||||
/* Portable-specific options */
|
||||
if (options->use_pam == -1)
|
||||
@@ -391,6 +400,43 @@ fill_default_server_options(ServerOptions *options)
|
||||
- }
|
||||
- if (options->permit_tun == -1)
|
||||
options->permit_tun = SSH_TUNMODE_NO;
|
||||
+ if (options->disable_multithreaded == -1)
|
||||
+ options->disable_multithreaded = 0;
|
||||
+ if (options->none_enabled == -1)
|
||||
+ options->none_enabled = 0;
|
||||
+ if (options->hpn_disabled == -1)
|
||||
@@ -1092,7 +1070,7 @@
|
||||
xxx_host = host;
|
||||
xxx_hostaddr = hostaddr;
|
||||
|
||||
-@@ -412,6 +423,28 @@ ssh_userauth2(const char *local_user, const char *server_user, char *host,
|
||||
+@@ -412,6 +423,27 @@ ssh_userauth2(const char *local_user, const char *server_user, char *host,
|
||||
|
||||
if (!authctxt.success)
|
||||
fatal("Authentication failed.");
|
||||
@@ -1117,10 +1095,9 @@
|
||||
+ fprintf(stderr, "NONE cipher switch disabled when a TTY is allocated\n");
|
||||
+ }
|
||||
+ }
|
||||
-+
|
||||
- debug("Authentication succeeded (%s).", authctxt.method->name);
|
||||
- }
|
||||
|
||||
+ #ifdef WITH_OPENSSL
|
||||
+ if (options.disable_multithreaded == 0) {
|
||||
diff --git a/sshd.c b/sshd.c
|
||||
index a738c3a..b32dbe0 100644
|
||||
--- a/sshd.c
|
||||
@@ -1217,11 +1194,10 @@
|
||||
index f1bbf00..21a70c2 100644
|
||||
--- a/version.h
|
||||
+++ b/version.h
|
||||
-@@ -3,4 +3,6 @@
|
||||
+@@ -3,4 +3,5 @@
|
||||
#define SSH_VERSION "OpenSSH_7.8"
|
||||
|
||||
#define SSH_PORTABLE "p1"
|
||||
-#define SSH_RELEASE SSH_VERSION SSH_PORTABLE
|
||||
-+#define SSH_HPN "-hpn14v16"
|
||||
+#define SSH_RELEASE SSH_VERSION SSH_PORTABLE SSH_HPN
|
||||
+
|
||||
17
net-misc/openssh/files/openssh-7.9_p1-hpn-sctp-glue.patch
Normal file
17
net-misc/openssh/files/openssh-7.9_p1-hpn-sctp-glue.patch
Normal file
@@ -0,0 +1,17 @@
|
||||
--- dd/openssh-7_8_P1-hpn-DynWinNoneSwitch-14.16.diff.orig 2018-09-12 18:18:51.851536374 -0700
|
||||
+++ dd/openssh-7_8_P1-hpn-DynWinNoneSwitch-14.16.diff 2018-09-12 18:19:01.116475099 -0700
|
||||
@@ -1190,14 +1190,3 @@
|
||||
# Example of overriding settings on a per-user basis
|
||||
#Match User anoncvs
|
||||
# X11Forwarding no
|
||||
-diff --git a/version.h b/version.h
|
||||
-index f1bbf00..21a70c2 100644
|
||||
---- a/version.h
|
||||
-+++ b/version.h
|
||||
-@@ -3,4 +3,5 @@
|
||||
- #define SSH_VERSION "OpenSSH_7.8"
|
||||
-
|
||||
- #define SSH_PORTABLE "p1"
|
||||
--#define SSH_RELEASE SSH_VERSION SSH_PORTABLE
|
||||
-+#define SSH_RELEASE SSH_VERSION SSH_PORTABLE SSH_HPN
|
||||
-+
|
||||
@@ -0,0 +1,13 @@
|
||||
diff --git a/openbsd-compat/openssl-compat.c b/openbsd-compat/openssl-compat.c
|
||||
index 8b4a3627..590b66d1 100644
|
||||
--- a/openbsd-compat/openssl-compat.c
|
||||
+++ b/openbsd-compat/openssl-compat.c
|
||||
@@ -76,7 +76,7 @@ ssh_OpenSSL_add_all_algorithms(void)
|
||||
ENGINE_load_builtin_engines();
|
||||
ENGINE_register_all_complete();
|
||||
|
||||
-#if OPENSSL_VERSION_NUMBER < 0x10001000L
|
||||
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||
OPENSSL_config(NULL);
|
||||
#else
|
||||
OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS |
|
||||
446
net-misc/openssh/openssh-7.9_p1.ebuild
Normal file
446
net-misc/openssh/openssh-7.9_p1.ebuild
Normal file
@@ -0,0 +1,446 @@
|
||||
# Copyright 1999-2018 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=6
|
||||
|
||||
inherit user flag-o-matic multilib autotools pam systemd
|
||||
|
||||
# Make it more portable between straight releases
|
||||
# and _p? releases.
|
||||
PARCH=${P/_}
|
||||
#HPN_PV="${PV^^}"
|
||||
HPN_PV="7.8_P1"
|
||||
|
||||
HPN_VER="14.16"
|
||||
HPN_PATCHES=(
|
||||
${PN}-${HPN_PV/./_}-hpn-DynWinNoneSwitch-${HPN_VER}.diff
|
||||
${PN}-${HPN_PV/./_}-hpn-AES-CTR-${HPN_VER}.diff
|
||||
)
|
||||
HPN_DISABLE_MTAES=1 # unit tests hang on MT-AES-CTR
|
||||
SCTP_VER="1.1" SCTP_PATCH="${PARCH}-sctp-${SCTP_VER}.patch.xz"
|
||||
X509_VER="11.5" X509_PATCH="${PARCH}+x509-${X509_VER}.diff.gz"
|
||||
|
||||
DESCRIPTION="Port of OpenBSD's free SSH release"
|
||||
HOMEPAGE="https://www.openssh.com/"
|
||||
SRC_URI="mirror://openbsd/OpenSSH/portable/${PARCH}.tar.gz
|
||||
${SCTP_PATCH:+sctp? ( https://dev.gentoo.org/~chutzpah/dist/openssh/${SCTP_PATCH} )}
|
||||
${HPN_VER:+hpn? ( $(printf "mirror://sourceforge/hpnssh/HPN-SSH%%20${HPN_VER/./v}%%20${HPN_PV/_}/%s\n" "${HPN_PATCHES[@]}") )}
|
||||
${X509_PATCH:+X509? ( https://roumenpetrov.info/openssh/x509-${X509_VER}/${X509_PATCH} )}
|
||||
"
|
||||
|
||||
LICENSE="BSD GPL-2"
|
||||
SLOT="0"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~ppc-aix ~x64-cygwin ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
|
||||
# Probably want to drop ssl defaulting to on in a future version.
|
||||
IUSE="abi_mips_n32 audit bindist debug hpn kerberos kernel_linux ldns libedit libressl livecd pam +pie sctp selinux +ssl static test X X509"
|
||||
RESTRICT="!test? ( test )"
|
||||
REQUIRED_USE="ldns? ( ssl )
|
||||
pie? ( !static )
|
||||
static? ( !kerberos !pam )
|
||||
X509? ( !sctp ssl )
|
||||
test? ( ssl )"
|
||||
|
||||
LIB_DEPEND="
|
||||
audit? ( sys-process/audit[static-libs(+)] )
|
||||
ldns? (
|
||||
net-libs/ldns[static-libs(+)]
|
||||
!bindist? ( net-libs/ldns[ecdsa,ssl(+)] )
|
||||
bindist? ( net-libs/ldns[-ecdsa,ssl(+)] )
|
||||
)
|
||||
libedit? ( dev-libs/libedit:=[static-libs(+)] )
|
||||
sctp? ( net-misc/lksctp-tools[static-libs(+)] )
|
||||
selinux? ( >=sys-libs/libselinux-1.28[static-libs(+)] )
|
||||
ssl? (
|
||||
!libressl? (
|
||||
|| (
|
||||
(
|
||||
>=dev-libs/openssl-1.0.1:0[bindist=]
|
||||
<dev-libs/openssl-1.1.0:0[bindist=]
|
||||
)
|
||||
>=dev-libs/openssl-1.1.0g:0[bindist=]
|
||||
)
|
||||
dev-libs/openssl:0=[static-libs(+)]
|
||||
)
|
||||
libressl? ( dev-libs/libressl:0=[static-libs(+)] )
|
||||
)
|
||||
>=sys-libs/zlib-1.2.3:=[static-libs(+)]"
|
||||
RDEPEND="
|
||||
!static? ( ${LIB_DEPEND//\[static-libs(+)]} )
|
||||
pam? ( virtual/pam )
|
||||
kerberos? ( virtual/krb5 )"
|
||||
DEPEND="${RDEPEND}
|
||||
static? ( ${LIB_DEPEND} )
|
||||
virtual/pkgconfig
|
||||
virtual/os-headers
|
||||
sys-devel/autoconf"
|
||||
RDEPEND="${RDEPEND}
|
||||
pam? ( >=sys-auth/pambase-20081028 )
|
||||
userland_GNU? ( virtual/shadow )
|
||||
X? ( x11-apps/xauth )"
|
||||
|
||||
S="${WORKDIR}/${PARCH}"
|
||||
|
||||
pkg_pretend() {
|
||||
# this sucks, but i'd rather have people unable to `emerge -u openssh`
|
||||
# than not be able to log in to their server any more
|
||||
maybe_fail() { [[ -z ${!2} ]] && echo "$1" ; }
|
||||
local fail="
|
||||
$(use hpn && maybe_fail hpn HPN_VER)
|
||||
$(use sctp && maybe_fail sctp SCTP_PATCH)
|
||||
$(use X509 && maybe_fail X509 X509_PATCH)
|
||||
"
|
||||
fail=$(echo ${fail})
|
||||
if [[ -n ${fail} ]] ; then
|
||||
eerror "Sorry, but this version does not yet support features"
|
||||
eerror "that you requested: ${fail}"
|
||||
eerror "Please mask ${PF} for now and check back later:"
|
||||
eerror " # echo '=${CATEGORY}/${PF}' >> /etc/portage/package.mask"
|
||||
die "booooo"
|
||||
fi
|
||||
|
||||
# Make sure people who are using tcp wrappers are notified of its removal. #531156
|
||||
if grep -qs '^ *sshd *:' "${EROOT%/}"/etc/hosts.{allow,deny} ; then
|
||||
ewarn "Sorry, but openssh no longer supports tcp-wrappers, and it seems like"
|
||||
ewarn "you're trying to use it. Update your ${EROOT}etc/hosts.{allow,deny} please."
|
||||
fi
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
sed -i \
|
||||
-e "/_PATH_XAUTH/s:/usr/X11R6/bin/xauth:${EPREFIX%/}/usr/bin/xauth:" \
|
||||
pathnames.h || die
|
||||
|
||||
# don't break .ssh/authorized_keys2 for fun
|
||||
sed -i '/^AuthorizedKeysFile/s:^:#:' sshd_config || die
|
||||
|
||||
eapply "${FILESDIR}"/${PN}-7.9_p1-openssl-1.0.2-compat.patch
|
||||
eapply "${FILESDIR}"/${PN}-7.8_p1-GSSAPI-dns.patch #165444 integrated into gsskex
|
||||
eapply "${FILESDIR}"/${PN}-6.7_p1-openssl-ignore-status.patch
|
||||
eapply "${FILESDIR}"/${PN}-7.5_p1-disable-conch-interop-tests.patch
|
||||
|
||||
local PATCHSET_VERSION_MACROS=()
|
||||
|
||||
if use X509 ; then
|
||||
pushd "${WORKDIR}" || die
|
||||
eapply "${FILESDIR}/${P}-X509-glue.patch"
|
||||
popd || die
|
||||
|
||||
eapply "${WORKDIR}"/${X509_PATCH%.*}
|
||||
|
||||
# We need to patch package version or any X.509 sshd will reject our ssh client
|
||||
# with "userauth_pubkey: could not parse key: string is too large [preauth]"
|
||||
# error
|
||||
einfo "Patching package version for X.509 patch set ..."
|
||||
sed -i \
|
||||
-e "s/^AC_INIT(\[OpenSSH\], \[Portable\]/AC_INIT([OpenSSH], [${X509_VER}]/" \
|
||||
"${S}"/configure.ac || die "Failed to patch package version for X.509 patch"
|
||||
|
||||
einfo "Patching version.h to expose X.509 patch set ..."
|
||||
sed -i \
|
||||
-e "/^#define SSH_PORTABLE.*/a #define SSH_X509 \"-PKIXSSH-${X509_VER}\"" \
|
||||
"${S}"/version.h || die "Failed to sed-in X.509 patch version"
|
||||
PATCHSET_VERSION_MACROS+=( 'SSH_X509' )
|
||||
fi
|
||||
|
||||
if use sctp ; then
|
||||
eapply "${WORKDIR}"/${SCTP_PATCH%.*}
|
||||
|
||||
einfo "Patching version.h to expose SCTP patch set ..."
|
||||
sed -i \
|
||||
-e "/^#define SSH_PORTABLE/a #define SSH_SCTP \"-sctp-${SCTP_VER}\"" \
|
||||
"${S}"/version.h || die "Failed to sed-in SCTP patch version"
|
||||
PATCHSET_VERSION_MACROS+=( 'SSH_SCTP' )
|
||||
|
||||
einfo "Disabling know failing test (cfgparse) caused by SCTP patch ..."
|
||||
sed -i \
|
||||
-e "/\t\tcfgparse \\\/d" \
|
||||
"${S}"/regress/Makefile || die "Failed to disable known failing test (cfgparse) caused by SCTP patch"
|
||||
fi
|
||||
|
||||
if use hpn ; then
|
||||
local hpn_patchdir="${T}/${P}-hpn${HPN_VER}"
|
||||
mkdir "${hpn_patchdir}"
|
||||
cp $(printf -- "${DISTDIR}/%s\n" "${HPN_PATCHES[@]}") "${hpn_patchdir}"
|
||||
pushd "${hpn_patchdir}"
|
||||
eapply "${FILESDIR}"/${P}-hpn-glue.patch
|
||||
use X509 && eapply "${FILESDIR}"/${P}-hpn-X509-glue.patch
|
||||
use sctp && eapply "${FILESDIR}"/${P}-hpn-sctp-glue.patch
|
||||
popd
|
||||
|
||||
eapply "${hpn_patchdir}"
|
||||
|
||||
einfo "Patching Makefile.in for HPN patch set ..."
|
||||
sed -i \
|
||||
-e "/^LIBS=/ s/\$/ -lpthread/" \
|
||||
"${S}"/Makefile.in || die "Failed to patch Makefile.in"
|
||||
|
||||
einfo "Patching version.h to expose HPN patch set ..."
|
||||
sed -i \
|
||||
-e "/^#define SSH_PORTABLE/a #define SSH_HPN \"-hpn${HPN_VER//./v}\"" \
|
||||
"${S}"/version.h || die "Failed to sed-in HPN patch version"
|
||||
PATCHSET_VERSION_MACROS+=( 'SSH_HPN' )
|
||||
|
||||
if [[ -n "${HPN_DISABLE_MTAES}" ]] ; then
|
||||
einfo "Disabling known non-working MT AES cipher per default ..."
|
||||
|
||||
cat > "${T}"/disable_mtaes.conf <<- EOF
|
||||
|
||||
# HPN's Multi-Threaded AES CTR cipher is currently known to be broken
|
||||
# and therefore disabled per default.
|
||||
DisableMTAES yes
|
||||
EOF
|
||||
sed -i \
|
||||
-e "/^#HPNDisabled.*/r ${T}/disable_mtaes.conf" \
|
||||
"${S}"/sshd_config || die "Failed to disabled MT AES ciphers in sshd_config"
|
||||
|
||||
sed -i \
|
||||
-e "/AcceptEnv.*_XXX_TEST$/a \\\tDisableMTAES\t\tyes" \
|
||||
"${S}"/regress/test-exec.sh || die "Failed to disable MT AES ciphers in test config"
|
||||
fi
|
||||
fi
|
||||
|
||||
if use X509 || use sctp || use hpn ; then
|
||||
einfo "Patching sshconnect.c to use SSH_RELEASE in send_client_banner() ..."
|
||||
sed -i \
|
||||
-e "s/PROTOCOL_MAJOR_2, PROTOCOL_MINOR_2, SSH_VERSION/PROTOCOL_MAJOR_2, PROTOCOL_MINOR_2, SSH_RELEASE/" \
|
||||
"${S}"/sshconnect.c || die "Failed to patch send_client_banner() to use SSH_RELEASE (sshconnect.c)"
|
||||
|
||||
einfo "Patching sshd.c to use SSH_RELEASE in sshd_exchange_identification() ..."
|
||||
sed -i \
|
||||
-e "s/PROTOCOL_MAJOR_2, PROTOCOL_MINOR_2, SSH_VERSION/PROTOCOL_MAJOR_2, PROTOCOL_MINOR_2, SSH_RELEASE/" \
|
||||
"${S}"/sshd.c || die "Failed to patch sshd_exchange_identification() to use SSH_RELEASE (sshd.c)"
|
||||
|
||||
einfo "Patching version.h to add our patch sets to SSH_RELEASE ..."
|
||||
sed -i \
|
||||
-e "s/^#define SSH_RELEASE.*/#define SSH_RELEASE SSH_VERSION SSH_PORTABLE ${PATCHSET_VERSION_MACROS[*]}/" \
|
||||
"${S}"/version.h || die "Failed to patch SSH_RELEASE (version.h)"
|
||||
fi
|
||||
|
||||
sed -i \
|
||||
-e "/#UseLogin no/d" \
|
||||
"${S}"/sshd_config || die "Failed to remove removed UseLogin option (sshd_config)"
|
||||
|
||||
[[ -d ${WORKDIR}/patch ]] && eapply "${WORKDIR}"/patch
|
||||
|
||||
eapply_user #473004
|
||||
|
||||
tc-export PKG_CONFIG
|
||||
local sed_args=(
|
||||
-e "s:-lcrypto:$(${PKG_CONFIG} --libs openssl):"
|
||||
# Disable PATH reset, trust what portage gives us #254615
|
||||
-e 's:^PATH=/:#PATH=/:'
|
||||
# Disable fortify flags ... our gcc does this for us
|
||||
-e 's:-D_FORTIFY_SOURCE=2::'
|
||||
)
|
||||
|
||||
# The -ftrapv flag ICEs on hppa #505182
|
||||
use hppa && sed_args+=(
|
||||
-e '/CFLAGS/s:-ftrapv:-fdisable-this-test:'
|
||||
-e '/OSSH_CHECK_CFLAG_LINK.*-ftrapv/d'
|
||||
)
|
||||
# _XOPEN_SOURCE causes header conflicts on Solaris
|
||||
[[ ${CHOST} == *-solaris* ]] && sed_args+=(
|
||||
-e 's/-D_XOPEN_SOURCE//'
|
||||
)
|
||||
sed -i "${sed_args[@]}" configure{.ac,} || die
|
||||
|
||||
eautoreconf
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
addwrite /dev/ptmx
|
||||
|
||||
use debug && append-cppflags -DSANDBOX_SECCOMP_FILTER_DEBUG
|
||||
use static && append-ldflags -static
|
||||
|
||||
local myconf=(
|
||||
--with-ldflags="${LDFLAGS}"
|
||||
--disable-strip
|
||||
--with-pid-dir="${EPREFIX}"$(usex kernel_linux '' '/var')/run
|
||||
--sysconfdir="${EPREFIX%/}"/etc/ssh
|
||||
--libexecdir="${EPREFIX%/}"/usr/$(get_libdir)/misc
|
||||
--datadir="${EPREFIX%/}"/usr/share/openssh
|
||||
--with-privsep-path="${EPREFIX%/}"/var/empty
|
||||
--with-privsep-user=sshd
|
||||
$(use_with audit audit linux)
|
||||
$(use_with kerberos kerberos5 "${EPREFIX%/}"/usr)
|
||||
# We apply the sctp patch conditionally, so can't pass --without-sctp
|
||||
# unconditionally else we get unknown flag warnings.
|
||||
$(use sctp && use_with sctp)
|
||||
$(use_with ldns)
|
||||
$(use_with libedit)
|
||||
$(use_with pam)
|
||||
$(use_with pie)
|
||||
$(use_with selinux)
|
||||
$(use_with ssl openssl)
|
||||
$(use_with ssl md5-passwords)
|
||||
$(use_with ssl ssl-engine)
|
||||
$(use_with !elibc_Cygwin hardening) #659210
|
||||
)
|
||||
|
||||
# stackprotect is broken on musl x86
|
||||
use elibc_musl && use x86 && myconf+=( --without-stackprotect )
|
||||
|
||||
# The seccomp sandbox is broken on x32, so use the older method for now. #553748
|
||||
use amd64 && [[ ${ABI} == "x32" ]] && myconf+=( --with-sandbox=rlimit )
|
||||
|
||||
econf "${myconf[@]}"
|
||||
}
|
||||
|
||||
src_test() {
|
||||
local t skipped=() failed=() passed=()
|
||||
local tests=( interop-tests compat-tests )
|
||||
|
||||
local shell=$(egetshell "${UID}")
|
||||
if [[ ${shell} == */nologin ]] || [[ ${shell} == */false ]] ; then
|
||||
elog "Running the full OpenSSH testsuite requires a usable shell for the 'portage'"
|
||||
elog "user, so we will run a subset only."
|
||||
skipped+=( tests )
|
||||
else
|
||||
tests+=( tests )
|
||||
fi
|
||||
|
||||
# It will also attempt to write to the homedir .ssh.
|
||||
local sshhome=${T}/homedir
|
||||
mkdir -p "${sshhome}"/.ssh
|
||||
for t in "${tests[@]}" ; do
|
||||
# Some tests read from stdin ...
|
||||
HOMEDIR="${sshhome}" HOME="${sshhome}" \
|
||||
emake -k -j1 ${t} </dev/null \
|
||||
&& passed+=( "${t}" ) \
|
||||
|| failed+=( "${t}" )
|
||||
done
|
||||
|
||||
einfo "Passed tests: ${passed[*]}"
|
||||
[[ ${#skipped[@]} -gt 0 ]] && ewarn "Skipped tests: ${skipped[*]}"
|
||||
[[ ${#failed[@]} -gt 0 ]] && die "Some tests failed: ${failed[*]}"
|
||||
}
|
||||
|
||||
# Gentoo tweaks to default config files.
|
||||
tweak_ssh_configs() {
|
||||
local locale_vars=(
|
||||
# These are language variables that POSIX defines.
|
||||
# http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html#tag_08_02
|
||||
LANG LC_ALL LC_COLLATE LC_CTYPE LC_MESSAGES LC_MONETARY LC_NUMERIC LC_TIME
|
||||
|
||||
# These are the GNU extensions.
|
||||
# https://www.gnu.org/software/autoconf/manual/html_node/Special-Shell-Variables.html
|
||||
LANGUAGE LC_ADDRESS LC_IDENTIFICATION LC_MEASUREMENT LC_NAME LC_PAPER LC_TELEPHONE
|
||||
)
|
||||
|
||||
# First the server config.
|
||||
cat <<-EOF >> "${ED%/}"/etc/ssh/sshd_config
|
||||
|
||||
# Allow client to pass locale environment variables. #367017
|
||||
AcceptEnv ${locale_vars[*]}
|
||||
|
||||
# Allow client to pass COLORTERM to match TERM. #658540
|
||||
AcceptEnv COLORTERM
|
||||
EOF
|
||||
|
||||
# Then the client config.
|
||||
cat <<-EOF >> "${ED%/}"/etc/ssh/ssh_config
|
||||
|
||||
# Send locale environment variables. #367017
|
||||
SendEnv ${locale_vars[*]}
|
||||
|
||||
# Send COLORTERM to match TERM. #658540
|
||||
SendEnv COLORTERM
|
||||
EOF
|
||||
|
||||
if use pam ; then
|
||||
sed -i \
|
||||
-e "/^#UsePAM /s:.*:UsePAM yes:" \
|
||||
-e "/^#PasswordAuthentication /s:.*:PasswordAuthentication no:" \
|
||||
-e "/^#PrintMotd /s:.*:PrintMotd no:" \
|
||||
-e "/^#PrintLastLog /s:.*:PrintLastLog no:" \
|
||||
"${ED%/}"/etc/ssh/sshd_config || die
|
||||
fi
|
||||
|
||||
if use livecd ; then
|
||||
sed -i \
|
||||
-e '/^#PermitRootLogin/c# Allow root login with password on livecds.\nPermitRootLogin Yes' \
|
||||
"${ED%/}"/etc/ssh/sshd_config || die
|
||||
fi
|
||||
}
|
||||
|
||||
src_install() {
|
||||
emake install-nokeys DESTDIR="${D}"
|
||||
fperms 600 /etc/ssh/sshd_config
|
||||
dobin contrib/ssh-copy-id
|
||||
newinitd "${FILESDIR}"/sshd.initd sshd
|
||||
newconfd "${FILESDIR}"/sshd-r1.confd sshd
|
||||
|
||||
newpamd "${FILESDIR}"/sshd.pam_include.2 sshd
|
||||
|
||||
tweak_ssh_configs
|
||||
|
||||
doman contrib/ssh-copy-id.1
|
||||
dodoc CREDITS OVERVIEW README* TODO sshd_config
|
||||
use hpn && dodoc HPN-README
|
||||
use X509 || dodoc ChangeLog
|
||||
|
||||
diropts -m 0700
|
||||
dodir /etc/skel/.ssh
|
||||
|
||||
keepdir /var/empty
|
||||
|
||||
systemd_dounit "${FILESDIR}"/sshd.{service,socket}
|
||||
systemd_newunit "${FILESDIR}"/sshd_at.service 'sshd@.service'
|
||||
}
|
||||
|
||||
pkg_preinst() {
|
||||
enewgroup sshd 22
|
||||
enewuser sshd 22 -1 /var/empty sshd
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
if has_version "<${CATEGORY}/${PN}-5.8_p1" ; then
|
||||
elog "Starting with openssh-5.8p1, the server will default to a newer key"
|
||||
elog "algorithm (ECDSA). You are encouraged to manually update your stored"
|
||||
elog "keys list as servers update theirs. See ssh-keyscan(1) for more info."
|
||||
fi
|
||||
if has_version "<${CATEGORY}/${PN}-7.0_p1" ; then
|
||||
elog "Starting with openssh-6.7, support for USE=tcpd has been dropped by upstream."
|
||||
elog "Make sure to update any configs that you might have. Note that xinetd might"
|
||||
elog "be an alternative for you as it supports USE=tcpd."
|
||||
fi
|
||||
if has_version "<${CATEGORY}/${PN}-7.1_p1" ; then #557388 #555518
|
||||
elog "Starting with openssh-7.0, support for ssh-dss keys were disabled due to their"
|
||||
elog "weak sizes. If you rely on these key types, you can re-enable the key types by"
|
||||
elog "adding to your sshd_config or ~/.ssh/config files:"
|
||||
elog " PubkeyAcceptedKeyTypes=+ssh-dss"
|
||||
elog "You should however generate new keys using rsa or ed25519."
|
||||
|
||||
elog "Starting with openssh-7.0, the default for PermitRootLogin changed from 'yes'"
|
||||
elog "to 'prohibit-password'. That means password auth for root users no longer works"
|
||||
elog "out of the box. If you need this, please update your sshd_config explicitly."
|
||||
fi
|
||||
if has_version "<${CATEGORY}/${PN}-7.6_p1" ; then
|
||||
elog "Starting with openssh-7.6p1, openssh upstream has removed ssh1 support entirely."
|
||||
elog "Furthermore, rsa keys with less than 1024 bits will be refused."
|
||||
fi
|
||||
if has_version "<${CATEGORY}/${PN}-7.7_p1" ; then
|
||||
elog "Starting with openssh-7.7p1, we no longer patch openssh to provide LDAP functionality."
|
||||
elog "Install sys-auth/ssh-ldap-pubkey and use OpenSSH's \"AuthorizedKeysCommand\" option"
|
||||
elog "if you need to authenticate against LDAP."
|
||||
elog "See https://wiki.gentoo.org/wiki/SSH/LDAP_migration for more details."
|
||||
fi
|
||||
if ! use ssl && has_version "${CATEGORY}/${PN}[ssl]" ; then
|
||||
elog "Be aware that by disabling openssl support in openssh, the server and clients"
|
||||
elog "no longer support dss/rsa/ecdsa keys. You will need to generate ed25519 keys"
|
||||
elog "and update all clients/servers that utilize them."
|
||||
fi
|
||||
|
||||
if use hpn && [[ -n "${HPN_DISABLE_MTAES}" ]] ; then
|
||||
elog ""
|
||||
elog "HPN's multi-threaded AES CTR cipher is currently known to be broken"
|
||||
elog "and therefore disabled at runtime per default."
|
||||
elog "Make sure your sshd_config is up to date and contains"
|
||||
elog ""
|
||||
elog " DisableMTAES yes"
|
||||
elog ""
|
||||
elog "Otherwise you maybe unable to connect to this sshd using any AES CTR cipher."
|
||||
elog ""
|
||||
fi
|
||||
}
|
||||
Reference in New Issue
Block a user