From: Thomas Huth <thuth@redhat.com>
To: qemu-devel@nongnu.org, Peter Maydell <peter.maydell@linaro.org>
Cc: "Daniel P. Berrangé" <berrange@redhat.com>,
"Stefano Garzarella" <sgarzare@redhat.com>
Subject: [PULL 06/17] block/ssh: Bump minimum libssh version to 0.8.7
Date: Wed, 2 Jun 2021 09:35:55 +0200 [thread overview]
Message-ID: <20210602073606.338994-7-thuth@redhat.com> (raw)
In-Reply-To: <20210602073606.338994-1-thuth@redhat.com>
It has been over two years since RHEL-8 was released, and thus per the
platform build policy, we no longer need to support RHEL-7 as a build
target. So from the RHEL-7 perspective, we do not have to support
libssh v0.7 anymore now.
Let's look at the versions from other distributions and operating
systems - according to repology.org, current shipping versions are:
RHEL-8: 0.9.4
Debian Buster: 0.8.7
openSUSE Leap 15.2: 0.8.7
Ubuntu LTS 18.04: 0.8.0 *
Ubuntu LTS 20.04: 0.9.3
FreeBSD: 0.9.5
Fedora 33: 0.9.5
Fedora 34: 0.9.5
OpenBSD: 0.9.5
macOS HomeBrew: 0.9.5
HaikuPorts: 0.9.5
* The version of libssh in Ubuntu 18.04 claims to be 0.8.0 from the
name of the package, but in reality it is a 0.7 patched up as a
Frankenstein monster with patches from the 0.8 development branch.
This gave us some headaches in the past already and so it never worked
with QEMU. All attempts to get it supported have failed in the past,
patches for QEMU have never been merged and a request to Ubuntu to
fix it in their 18.04 distro has been ignored:
https://bugs.launchpad.net/ubuntu/+source/libssh/+bug/1847514
Thus we really should ignore the libssh in Ubuntu 18.04 in QEMU, too.
Fix it by bumping the minimum libssh version to something that is
greater than 0.8.0 now. Debian Buster and openSUSE Leap have the
oldest version and so 0.8.7 is the new minimum.
Signed-off-by: Thomas Huth <thuth@redhat.com>
Tested-by: Richard W.M. Jones <rjones@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Acked-by: Richard W.M. Jones <rjones@redhat.com>
Message-Id: <20210519155859.344569-1-thuth@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
block/ssh.c | 59 -----------------------------------------------------
configure | 19 +----------------
2 files changed, 1 insertion(+), 77 deletions(-)
diff --git a/block/ssh.c b/block/ssh.c
index ebe3d8b631..b51a031620 100644
--- a/block/ssh.c
+++ b/block/ssh.c
@@ -277,7 +277,6 @@ static void ssh_parse_filename(const char *filename, QDict *options,
static int check_host_key_knownhosts(BDRVSSHState *s, Error **errp)
{
int ret;
-#ifdef HAVE_LIBSSH_0_8
enum ssh_known_hosts_e state;
int r;
ssh_key pubkey;
@@ -343,46 +342,6 @@ static int check_host_key_knownhosts(BDRVSSHState *s, Error **errp)
error_setg(errp, "error while checking for known server (%d)", state);
goto out;
}
-#else /* !HAVE_LIBSSH_0_8 */
- int state;
-
- state = ssh_is_server_known(s->session);
- trace_ssh_server_status(state);
-
- switch (state) {
- case SSH_SERVER_KNOWN_OK:
- /* OK */
- trace_ssh_check_host_key_knownhosts();
- break;
- case SSH_SERVER_KNOWN_CHANGED:
- ret = -EINVAL;
- error_setg(errp,
- "host key does not match the one in known_hosts; this "
- "may be a possible attack");
- goto out;
- case SSH_SERVER_FOUND_OTHER:
- ret = -EINVAL;
- error_setg(errp,
- "host key for this server not found, another type exists");
- goto out;
- case SSH_SERVER_FILE_NOT_FOUND:
- ret = -ENOENT;
- error_setg(errp, "known_hosts file not found");
- goto out;
- case SSH_SERVER_NOT_KNOWN:
- ret = -EINVAL;
- error_setg(errp, "no host key was found in known_hosts");
- goto out;
- case SSH_SERVER_ERROR:
- ret = -EINVAL;
- error_setg(errp, "server error");
- goto out;
- default:
- ret = -EINVAL;
- error_setg(errp, "error while checking for known server (%d)", state);
- goto out;
- }
-#endif /* !HAVE_LIBSSH_0_8 */
/* known_hosts checking successful. */
ret = 0;
@@ -438,11 +397,7 @@ check_host_key_hash(BDRVSSHState *s, const char *hash,
unsigned char *server_hash;
size_t server_hash_len;
-#ifdef HAVE_LIBSSH_0_8
r = ssh_get_server_publickey(s->session, &pubkey);
-#else
- r = ssh_get_publickey(s->session, &pubkey);
-#endif
if (r != SSH_OK) {
session_error_setg(errp, s, "failed to read remote host key");
return -EINVAL;
@@ -1233,8 +1188,6 @@ static void unsafe_flush_warning(BDRVSSHState *s, const char *what)
}
}
-#ifdef HAVE_LIBSSH_0_8
-
static coroutine_fn int ssh_flush(BDRVSSHState *s, BlockDriverState *bs)
{
int r;
@@ -1271,18 +1224,6 @@ static coroutine_fn int ssh_co_flush(BlockDriverState *bs)
return ret;
}
-#else /* !HAVE_LIBSSH_0_8 */
-
-static coroutine_fn int ssh_co_flush(BlockDriverState *bs)
-{
- BDRVSSHState *s = bs->opaque;
-
- unsafe_flush_warning(s, "libssh >= 0.8.0");
- return 0;
-}
-
-#endif /* !HAVE_LIBSSH_0_8 */
-
static int64_t ssh_getlength(BlockDriverState *bs)
{
BDRVSSHState *s = bs->opaque;
diff --git a/configure b/configure
index 90c0807347..ae629a3127 100755
--- a/configure
+++ b/configure
@@ -3529,7 +3529,7 @@ fi
##########################################
# libssh probe
if test "$libssh" != "no" ; then
- if $pkg_config --exists libssh; then
+ if $pkg_config --exists "libssh >= 0.8.7"; then
libssh_cflags=$($pkg_config libssh --cflags)
libssh_libs=$($pkg_config libssh --libs)
libssh=yes
@@ -3541,23 +3541,6 @@ if test "$libssh" != "no" ; then
fi
fi
-##########################################
-# Check for libssh 0.8
-# This is done like this instead of using the LIBSSH_VERSION_* and
-# SSH_VERSION_* macros because some distributions in the past shipped
-# snapshots of the future 0.8 from Git, and those snapshots did not
-# have updated version numbers (still referring to 0.7.0).
-
-if test "$libssh" = "yes"; then
- cat > $TMPC <<EOF
-#include <libssh/libssh.h>
-int main(void) { return ssh_get_server_publickey(NULL, NULL); }
-EOF
- if compile_prog "$libssh_cflags" "$libssh_libs"; then
- libssh_cflags="-DHAVE_LIBSSH_0_8 $libssh_cflags"
- fi
-fi
-
##########################################
# linux-aio probe
--
2.27.0
next prev parent reply other threads:[~2021-06-02 7:42 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-02 7:35 [PULL 00/17] doc updates and CentOS 7 removal Thomas Huth
2021-06-02 7:35 ` [PULL 01/17] docs: fix references to docs/devel/tracing.rst Thomas Huth
2021-06-02 7:35 ` [PULL 02/17] docs: fix references to docs/devel/atomics.rst Thomas Huth
2021-06-02 7:35 ` [PULL 03/17] docs: fix references to docs/devel/build-system.rst Thomas Huth
2021-06-02 7:35 ` [PULL 04/17] docs: fix references to docs/specs/tpm.rst Thomas Huth
2021-06-02 7:35 ` [PULL 05/17] docs: fix references to docs/devel/s390-dasd-ipl.rst Thomas Huth
2021-06-02 7:35 ` Thomas Huth [this message]
2021-06-02 7:35 ` [PULL 07/17] patchew: move quick build job from CentOS 7 to CentOS 8 container Thomas Huth
2021-06-02 7:35 ` [PULL 08/17] crypto: bump min nettle to 3.4, dropping RHEL-7 support Thomas Huth
2021-06-02 7:35 ` [PULL 09/17] crypto: drop back compatibility typedefs for nettle Thomas Huth
2021-06-02 7:35 ` [PULL 10/17] crypto: bump min gcrypt to 1.8.0, dropping RHEL-7 support Thomas Huth
2021-06-02 7:36 ` [PULL 11/17] crypto: bump min gnutls to 3.5.18, " Thomas Huth
2021-06-02 7:36 ` [PULL 12/17] crypto: drop used conditional check Thomas Huth
2021-06-02 7:36 ` [PULL 13/17] tests/vm: convert centos VM recipe to CentOS 8 Thomas Huth
2021-06-02 7:36 ` [PULL 14/17] tests/docker: drop CentOS 7 container Thomas Huth
2021-06-02 7:36 ` [PULL 15/17] configure: bump min required glib version to 2.56 Thomas Huth
2021-06-02 7:36 ` [PULL 16/17] configure: bump min required GCC to 7.5.0 Thomas Huth
2021-06-02 7:36 ` [PULL 17/17] configure: bump min required CLang to 6.0 / XCode 10.0 Thomas Huth
2021-06-02 18:31 ` [PULL 00/17] doc updates and CentOS 7 removal Peter Maydell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210602073606.338994-7-thuth@redhat.com \
--to=thuth@redhat.com \
--cc=berrange@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=sgarzare@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).