diff options
Diffstat (limited to 'gnu')
-rw-r--r-- | gnu/local.mk | 1 | ||||
-rw-r--r-- | gnu/packages/patches/libssh-hostname-parser-bug.patch | 31 | ||||
-rw-r--r-- | gnu/packages/ssh.scm | 7 |
3 files changed, 36 insertions, 3 deletions
diff --git a/gnu/local.mk b/gnu/local.mk index 4d4c3b40fd..bf8143c2c6 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -743,6 +743,7 @@ dist_patch_DATA = \ %D%/packages/patches/libsndfile-armhf-type-checks.patch \ %D%/packages/patches/libsndfile-CVE-2017-8361-8363-8365.patch \ %D%/packages/patches/libsndfile-CVE-2017-8362.patch \ + %D%/packages/patches/libssh-hostname-parser-bug.patch \ %D%/packages/patches/libssh2-fix-build-failure-with-gcrypt.patch \ %D%/packages/patches/libtar-CVE-2013-4420.patch \ %D%/packages/patches/libtasn1-CVE-2017-6891.patch \ diff --git a/gnu/packages/patches/libssh-hostname-parser-bug.patch b/gnu/packages/patches/libssh-hostname-parser-bug.patch new file mode 100644 index 0000000000..69f46cbdd6 --- /dev/null +++ b/gnu/packages/patches/libssh-hostname-parser-bug.patch @@ -0,0 +1,31 @@ +Fix "Hostname" parsing in OpenSSH config files, as reported +at <https://red.libssh.org/issues/260>. + +From: Niels Ole Salscheider <niels_ole@salscheider-online.de> +Date: Mon, 8 May 2017 17:36:13 +0200 +Subject: [PATCH] Fix reading of the first parameter + +This is a fixup for 7b8b5eb4eac314a3a29be812bef0264c6611f6e7. +Previously, it would return as long as the parameter was _not_ seen +before. It also did not handle the case for the unsupported opcode (-1) +which would cause a segfault when accessing the "seen" array. +--- + src/config.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/src/config.c b/src/config.c +index 7c03b27..238a655 100644 +--- a/src/config.c ++++ b/src/config.c +@@ -218,8 +218,9 @@ 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 (*parsing == 1 && opcode != SOC_HOST && ++ opcode > SOC_UNSUPPORTED && opcode < SOC_END) { ++ if (seen[opcode] == 1) { + return 0; + } + seen[opcode] = 1; diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm index c96ed0a72b..d79663a2b5 100644 --- a/gnu/packages/ssh.scm +++ b/gnu/packages/ssh.scm @@ -58,15 +58,16 @@ (define-public libssh (package (name "libssh") - (version "0.7.4") + (version "0.7.5") (source (origin (method url-fetch) (uri (string-append - "https://red.libssh.org/attachments/download/210/libssh-" + "https://red.libssh.org/attachments/download/218/libssh-" version ".tar.xz")) (sha256 (base32 - "03bcp9ksqp0s1pmwfmzhcknvkxay5k0mjzzxp3rjlifbng1vxq9r")))) + "15bh6dm9c50ndddzh3gqcgw7axp3ghrspjpkb1z3dr90vkanvs2l")) + (patches (search-patches "libssh-hostname-parser-bug.patch")))) (build-system cmake-build-system) (outputs '("out" "debug")) (arguments |