commit:     cff4c91c68bcc74b06f0d2f9420480ecd0d2e1bf
Author:     Mihai Moldovan <ionic <AT> ionic <DOT> de>
AuthorDate: Tue Aug 15 12:48:58 2017 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Tue Aug 15 12:49:49 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=cff4c91c

net-libs/libssh: Backport upstream fixes

Gentoo-bug: 627900
Package-Manager: Portage-2.3.7, Repoman-2.3.3

 .../libssh-0.7.5-fix-config-buffer-underflow.patch |  25 +++++
 .../files/libssh-0.7.5-fix-config-parsing.patch    |  32 +++++++
 net-libs/libssh/libssh-0.7.5-r1.ebuild             | 101 +++++++++++++++++++++
 3 files changed, 158 insertions(+)

diff --git 
a/net-libs/libssh/files/libssh-0.7.5-fix-config-buffer-underflow.patch 
b/net-libs/libssh/files/libssh-0.7.5-fix-config-buffer-underflow.patch
new file mode 100644
index 00000000000..7ff03263d19
--- /dev/null
+++ b/net-libs/libssh/files/libssh-0.7.5-fix-config-buffer-underflow.patch
@@ -0,0 +1,25 @@
+From 0cffb88b80b1e8b7e292646b955e9b9ca02315c4 Mon Sep 17 00:00:00 2001
+From: Aris Adamantiadis <[email protected]>
+Date: Thu, 8 Jun 2017 00:22:02 +0200
+Subject: config: fix buffer underflow with unrecognized opcodes
+
+---
+ src/config.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/config.c b/src/config.c
+index 519926e7..6187c90f 100644
+--- a/src/config.c
++++ b/src/config.c
+@@ -218,7 +218,7 @@ static int ssh_config_parse_line(ssh_session session, 
const char *line,
+   }
+ 
+   opcode = ssh_config_get_opcode(keyword);
+-  if (*parsing == 1 && opcode != SOC_HOST) {
++  if (*parsing == 1 && opcode != SOC_HOST && opcode != SOC_UNSUPPORTED) {
+       if (seen[opcode] != 0) {
+           return 0;
+       }
+-- 
+cgit v1.1
+

diff --git a/net-libs/libssh/files/libssh-0.7.5-fix-config-parsing.patch 
b/net-libs/libssh/files/libssh-0.7.5-fix-config-parsing.patch
new file mode 100644
index 00000000000..3596cf02105
--- /dev/null
+++ b/net-libs/libssh/files/libssh-0.7.5-fix-config-parsing.patch
@@ -0,0 +1,32 @@
+From 5333be5988c3789e7011598995f4df90d50d84d0 Mon Sep 17 00:00:00 2001
+From: "Artyom V. Poptsov" <[email protected]>
+Date: Sun, 4 Jun 2017 11:54:55 +0300
+Subject: config: Bugfix: Don't skip unseen opcodes
+
+libssh fails to read the configuration from a config file due to a
+wrong check in 'ssh_config_parse_line' procedure in 'config.c'; it's
+effectively skipping every opcode (and therefore every option) from
+the file.  The change fixes that behaviour.
+
+Signed-off-by: Artyom V. Poptsov <[email protected]>
+Reviewed-by: Andreas Schneider <[email protected]>
+---
+ src/config.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/config.c b/src/config.c
+index 6478fc5f..519926e7 100644
+--- a/src/config.c
++++ b/src/config.c
+@@ -219,7 +219,7 @@ static int ssh_config_parse_line(ssh_session session, 
const char *line,
+ 
+   opcode = ssh_config_get_opcode(keyword);
+   if (*parsing == 1 && opcode != SOC_HOST) {
+-      if (seen[opcode] == 0) {
++      if (seen[opcode] != 0) {
+           return 0;
+       }
+       seen[opcode] = 1;
+-- 
+cgit v1.1
+

diff --git a/net-libs/libssh/libssh-0.7.5-r1.ebuild 
b/net-libs/libssh/libssh-0.7.5-r1.ebuild
new file mode 100644
index 00000000000..082de3cdefc
--- /dev/null
+++ b/net-libs/libssh/libssh-0.7.5-r1.ebuild
@@ -0,0 +1,101 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+MY_P="${PN}-${PV/_rc/rc}"
+inherit eutils cmake-multilib multilib
+
+DESCRIPTION="Access a working SSH implementation by means of a library"
+HOMEPAGE="http://www.libssh.org/";
+SRC_URI="https://red.libssh.org/attachments/download/218/${MY_P}.tar.xz -> 
${P}.tar.xz"
+
+LICENSE="LGPL-2.1"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~s390 ~sparc ~x86 
~amd64-linux ~x86-linux"
+SLOT="0/4" # subslot = soname major version
+IUSE="debug doc examples gcrypt gssapi libressl pcap +sftp ssh1 server 
static-libs test zlib"
+# Maintainer: check IUSE-defaults at DefineOptions.cmake
+
+RDEPEND="
+       zlib? ( >=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}] )
+       !gcrypt? (
+               !libressl? ( >=dev-libs/openssl-1.0.1h-r2:0[${MULTILIB_USEDEP}] 
)
+               libressl? ( dev-libs/libressl[${MULTILIB_USEDEP}] )
+       )
+       gcrypt? ( >=dev-libs/libgcrypt-1.5.3:0[${MULTILIB_USEDEP}] )
+       gssapi? ( >=virtual/krb5-0-r1[${MULTILIB_USEDEP}] )
+"
+DEPEND="
+       ${RDEPEND}
+       doc? ( app-doc/doxygen )
+       test? ( >=dev-util/cmocka-0.3.1[${MULTILIB_USEDEP}] )
+"
+
+DOCS=( AUTHORS README ChangeLog )
+
+S="${WORKDIR}/${MY_P}"
+
+PATCHES=(
+       "${FILESDIR}"/${PN}-0.5.0-tests.patch
+       "${FILESDIR}"/${P}-fix-config-parsing.patch
+       "${FILESDIR}"/${P}-fix-config-buffer-underflow.patch
+)
+
+src_prepare() {
+       # just install the examples do not compile them
+       sed -i \
+               -e '/add_subdirectory(examples)/s/^/#DONOTWANT/' \
+               CMakeLists.txt || die
+
+       # keyfile torture test is currently broken
+       sed \
+               -e '/torture_keyfiles/d' \
+               -i tests/unittests/CMakeLists.txt || die
+
+       cmake-utils_src_prepare
+}
+
+multilib_src_configure() {
+       local mycmakeargs=(
+               -DWITH_DEBUG_CALLTRACE="$(usex debug)"
+               -DWITH_DEBUG_CRYPTO="$(usex debug)"
+               -DWITH_GCRYPT="$(usex gcrypt)"
+               -DWITH_GSSAPI="$(usex gssapi)"
+               -DWITH_NACL=no
+               -DWITH_PCAP="$(usex pcap)"
+               -DWITH_SERVER="$(usex server)"
+               -DWITH_SFTP="$(usex sftp)"
+               -DWITH_SSH1="$(usex ssh1)"
+               -DWITH_STATIC_LIB="$(usex static-libs)"
+               -DWITH_STATIC_LIB="$(usex test)"
+               -DWITH_TESTING="$(usex test)"
+               -DWITH_ZLIB="$(usex zlib)"
+       )
+
+       cmake-utils_src_configure
+}
+
+multilib_src_compile() {
+       cmake-utils_src_compile
+       multilib_is_native_abi && use doc && cmake-utils_src_compile doc
+}
+
+multilib_src_install() {
+       cmake-utils_src_install
+
+       if multilib_is_native_abi && use doc ; then
+               docinto html
+               dodoc -r doc/html/.
+       fi
+
+       use static-libs || rm -f "${D}"/usr/$(get_libdir)/libssh{,_threads}.a
+}
+
+multilib_src_install_all() {
+       einstalldocs
+
+       if use examples; then
+               docinto examples
+               dodoc examples/*.{c,h,cpp}
+       fi
+}

Reply via email to