forked from pool/libssh
Updating link to change in openSUSE:Factory/libssh revision 74
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/libssh?expand=0&rev=6f0af2fe0d378f902db7face133ae1c2
This commit is contained in:
committed by
Git OBS Bridge
commit
d24ba9e15c
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
## Default LFS
|
||||||
|
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.gem filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.jar filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.lz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.lzma filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.obscpio filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.oxt filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.png filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.rpm filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.tbz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.txz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.whl filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.zst filter=lfs diff=lfs merge=lfs -text
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
.osc
|
53
0001-disable-timeout-test-on-slow-buildsystems.patch
Normal file
53
0001-disable-timeout-test-on-slow-buildsystems.patch
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
Index: libssh-0.10.0/tests/unittests/torture_misc.c
|
||||||
|
===================================================================
|
||||||
|
--- libssh-0.10.0.orig/tests/unittests/torture_misc.c 2022-07-07 15:53:51.000000000 +0200
|
||||||
|
+++ libssh-0.10.0/tests/unittests/torture_misc.c 2022-08-26 14:19:01.827866890 +0200
|
||||||
|
@@ -211,11 +211,13 @@ static void torture_timeout_elapsed(void
|
||||||
|
ssh_timestamp_init(&ts);
|
||||||
|
usleep(30000);
|
||||||
|
|
||||||
|
+#ifndef SLOW_TEST_SYSTEM
|
||||||
|
assert_true(ssh_timeout_elapsed(&ts,25));
|
||||||
|
assert_false(ssh_timeout_elapsed(&ts,30000));
|
||||||
|
assert_false(ssh_timeout_elapsed(&ts,75));
|
||||||
|
assert_true(ssh_timeout_elapsed(&ts,0));
|
||||||
|
assert_false(ssh_timeout_elapsed(&ts,-1));
|
||||||
|
+#endif /* SLOW_TEST_SYSTEM */
|
||||||
|
}
|
||||||
|
|
||||||
|
static void torture_timeout_update(void **state){
|
||||||
|
@@ -223,11 +225,13 @@ static void torture_timeout_update(void
|
||||||
|
(void) state;
|
||||||
|
ssh_timestamp_init(&ts);
|
||||||
|
usleep(50000);
|
||||||
|
+#ifndef SLOW_TEST_SYSTEM
|
||||||
|
assert_int_equal(ssh_timeout_update(&ts,25), 0);
|
||||||
|
assert_in_range(ssh_timeout_update(&ts,30000),29000,29960);
|
||||||
|
assert_in_range(ssh_timeout_update(&ts,75),1,40);
|
||||||
|
assert_int_equal(ssh_timeout_update(&ts,0),0);
|
||||||
|
assert_int_equal(ssh_timeout_update(&ts,-1),-1);
|
||||||
|
+#endif /* SLOW_TEST_SYSTEM */
|
||||||
|
}
|
||||||
|
|
||||||
|
static void torture_ssh_analyze_banner(void **state) {
|
||||||
|
Index: libssh-0.10.0/DefineOptions.cmake
|
||||||
|
===================================================================
|
||||||
|
--- libssh-0.10.0.orig/DefineOptions.cmake 2022-07-07 15:53:51.000000000 +0200
|
||||||
|
+++ libssh-0.10.0/DefineOptions.cmake 2022-08-26 14:19:41.500119198 +0200
|
||||||
|
@@ -25,6 +25,7 @@ option(WITH_GEX "Enable DH Group exchang
|
||||||
|
option(WITH_INSECURE_NONE "Enable insecure none cipher and MAC algorithms (not suitable for production!)" OFF)
|
||||||
|
option(FUZZ_TESTING "Build with fuzzer for the server and client (automatically enables none cipher!)" OFF)
|
||||||
|
option(PICKY_DEVELOPER "Build with picky developer flags" OFF)
|
||||||
|
+option(SLOW_TEST_SYSTEM "Disable tests that fail on slow systems" OFF)
|
||||||
|
|
||||||
|
if (WITH_ZLIB)
|
||||||
|
set(WITH_LIBZ ON)
|
||||||
|
@@ -60,3 +61,8 @@ endif (NOT GLOBAL_CLIENT_CONFIG)
|
||||||
|
if (FUZZ_TESTING)
|
||||||
|
set(WITH_INSECURE_NONE ON)
|
||||||
|
endif (FUZZ_TESTING)
|
||||||
|
+
|
||||||
|
+if (SLOW_TEST_SYSTEM)
|
||||||
|
+ set (SLOW_TEST_SYSTEM ON)
|
||||||
|
+ add_definitions(-DSLOW_TEST_SYSTEM)
|
||||||
|
+endif (SLOW_TEST_SYSTEM)
|
3
_multibuild
Normal file
3
_multibuild
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<multibuild>
|
||||||
|
<package>test</package>
|
||||||
|
</multibuild>
|
1
baselibs.conf
Normal file
1
baselibs.conf
Normal file
@@ -0,0 +1 @@
|
|||||||
|
libssh4
|
BIN
libssh-0.10.6.tar.xz
(Stored with Git LFS)
Normal file
BIN
libssh-0.10.6.tar.xz
(Stored with Git LFS)
Normal file
Binary file not shown.
16
libssh-0.10.6.tar.xz.asc
Normal file
16
libssh-0.10.6.tar.xz.asc
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
|
||||||
|
iQIzBAABCgAdFiEEjf9T4Y8qvI2PPJIjfuD8TcwBTj0FAmWAeGkACgkQfuD8TcwB
|
||||||
|
Tj2yAw//QOMEcCiijJvOgXCKsVoV9oSuK3aYxqpOS9cV2P40eev0KQrAZC2EXNt3
|
||||||
|
XAdfNhA21b2C6qSxckmkCWg3vwPmM6LousHG+zpyZkiSziolMoeBkvbEdU42fufE
|
||||||
|
SD39cA1bBEbZahyrILWT2I3Bi0d0G7FC13tIBXShS2zIITSXs/2SSRIhg3OXB979
|
||||||
|
FTwvEE4zHeSXO4itTMNA/sMJ/0qPccQIzisH0g/TF4318b0qjlQjkHJS1y0f3/PL
|
||||||
|
Ge3RORQVcZqGTnhJNlF/tKD8wZ9mfqqurQ9yNshiAu8hH8sDH5ZhI3o5pjQe0mGO
|
||||||
|
JNEwTw0X/vZ4iglWFmm2CusiHrh0KUFsrp8f3oaL3HU4i7yYgo0FhzFtgFVt0gXO
|
||||||
|
JQOhlSUq50yqbBj6S9C5ecuSR0uPgYA4d8qCFrt9oD77m7Qi3mMi+f/kP+HctIaV
|
||||||
|
4ro7lZf6IS54J4/m5hRY3F0nweFnZZL8gn8Da8mBZSvhXCqQL6qbD9buwrTzxGft
|
||||||
|
Fct7+PrRwz9igO7j2nNMyWxtX55/GpX06n7vuonRgQQQiT8eQ5R71STMHJaACFPS
|
||||||
|
CJHCpuVL28HGdyAxN5d65TCvkNo9/gFGM6ocIH3OlreTFUvy22qNrqwHpCkLgYWU
|
||||||
|
ylntVoE/VYtHtwFOe0uuCX+2TiM03P5UT2NqAAa/8D4Z5ur3qUY=
|
||||||
|
=nXW5
|
||||||
|
-----END PGP SIGNATURE-----
|
BIN
libssh-0.11.1.tar.xz
(Stored with Git LFS)
Normal file
BIN
libssh-0.11.1.tar.xz
(Stored with Git LFS)
Normal file
Binary file not shown.
16
libssh-0.11.1.tar.xz.asc
Normal file
16
libssh-0.11.1.tar.xz.asc
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
|
||||||
|
iQIzBAABCAAdFiEEiKIo2JsHwsd9DHgJA9XfjP3T6OcFAmbRl74ACgkQA9XfjP3T
|
||||||
|
6OdnSw/+IrXAbSSpjVNG5Wjz3WQjqXkWInCT+qNhcS5w+qasGW5i6mktoNJkg2Fd
|
||||||
|
P4iRCeJEuZbOHZLWXdUaDKjmlOUIda2xA8U01uw2VrleEu05JV/s5tS1MpVOPfDi
|
||||||
|
8+CTxPesFQ9uX9q+OojTr4QXqBDqv15sldwRVTKegNpLkk3xHUUaMjwikWKKxXG+
|
||||||
|
ypD4UCJWKVVhen9HPRSUOtruliZFPxQSLYvj4XKJxpr/QVaORS0EsTpdYP0h1+18
|
||||||
|
6epynp4e1/9GRTmrKa8/JcCd/4c2UnHBFpw0DU1YirLK+54/qD76o63MTbo7mKru
|
||||||
|
cgfypfA/sdeklGTZYLrCyizcrSc2poaTznczUZC6gi3FxivLoldFyDgXeSQWEieB
|
||||||
|
QTGgnaLkB2Y2XuBl9F9MatqFC35TBuUUwHBoEa31acQhmotui5tF4oq/JxRtZi8v
|
||||||
|
OyrTYc/xfmDh4SbWuEVqr6B2SZjhxrIvEGEe4adJQ/tVN2wweoNgTHt8XjBb1amB
|
||||||
|
M9RPeXG5Uon+gIXDVzjgx+DZ85FweCEngv+OdjHPIBWsJUEc722L/gypIFnBfaPV
|
||||||
|
JgM84wxQz2J8xyk2zEANog9M8ae5jG9TVJORO8to+gbRlKB2ZRDdDne0cgRUSWaj
|
||||||
|
0IKsnehsxjF2OqChjRqRMBhfVAA0hrYU1ngxwCcdAcdlbfgs5L0=
|
||||||
|
=P/pw
|
||||||
|
-----END PGP SIGNATURE-----
|
265
libssh-fix-ipv6-hostname-regression.patch
Normal file
265
libssh-fix-ipv6-hostname-regression.patch
Normal file
@@ -0,0 +1,265 @@
|
|||||||
|
From 66ac6343b246458a6645ae32f75556a1407031ec Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jakub Jelen <jjelen@redhat.com>
|
||||||
|
Date: Fri, 22 Dec 2023 10:32:40 +0100
|
||||||
|
Subject: [PATCH 1/2] Fix regression in IPv6 addresses in hostname parsing
|
||||||
|
|
||||||
|
Signed-off-by: Jakub Jelen <jjelen@redhat.com>
|
||||||
|
---
|
||||||
|
include/libssh/config_parser.h | 11 ++++++++---
|
||||||
|
src/config.c | 4 ++--
|
||||||
|
src/config_parser.c | 19 ++++++++++++++-----
|
||||||
|
src/options.c | 10 ++--------
|
||||||
|
4 files changed, 26 insertions(+), 18 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/include/libssh/config_parser.h b/include/libssh/config_parser.h
|
||||||
|
index a7dd42a2c..ca353432b 100644
|
||||||
|
--- a/include/libssh/config_parser.h
|
||||||
|
+++ b/include/libssh/config_parser.h
|
||||||
|
@@ -30,6 +30,8 @@
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+#include <stdbool.h>
|
||||||
|
+
|
||||||
|
char *ssh_config_get_cmd(char **str);
|
||||||
|
|
||||||
|
char *ssh_config_get_token(char **str);
|
||||||
|
@@ -49,14 +51,17 @@ int ssh_config_get_yesno(char **str, int notfound);
|
||||||
|
* be stored or NULL if we do not care about the result.
|
||||||
|
* @param[out] port Pointer to the location, where the new port will
|
||||||
|
* be stored or NULL if we do not care about the result.
|
||||||
|
+ * @param[in] ignore_port Set to true if the we should not attempt to parse
|
||||||
|
+ * port number.
|
||||||
|
*
|
||||||
|
* @returns SSH_OK if the provided string is in format of SSH URI,
|
||||||
|
* SSH_ERROR on failure
|
||||||
|
*/
|
||||||
|
int ssh_config_parse_uri(const char *tok,
|
||||||
|
- char **username,
|
||||||
|
- char **hostname,
|
||||||
|
- char **port);
|
||||||
|
+ char **username,
|
||||||
|
+ char **hostname,
|
||||||
|
+ char **port,
|
||||||
|
+ bool ignore_port);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
diff --git a/src/config.c b/src/config.c
|
||||||
|
index 5eedbce96..7135c3b19 100644
|
||||||
|
--- a/src/config.c
|
||||||
|
+++ b/src/config.c
|
||||||
|
@@ -464,7 +464,7 @@ ssh_config_parse_proxy_jump(ssh_session session, const char *s, bool do_parsing)
|
||||||
|
}
|
||||||
|
if (parse_entry) {
|
||||||
|
/* We actually care only about the first item */
|
||||||
|
- rv = ssh_config_parse_uri(cp, &username, &hostname, &port);
|
||||||
|
+ rv = ssh_config_parse_uri(cp, &username, &hostname, &port, false);
|
||||||
|
/* The rest of the list needs to be passed on */
|
||||||
|
if (endp != NULL) {
|
||||||
|
next = strdup(endp + 1);
|
||||||
|
@@ -475,7 +475,7 @@ ssh_config_parse_proxy_jump(ssh_session session, const char *s, bool do_parsing)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
/* The rest is just sanity-checked to avoid failures later */
|
||||||
|
- rv = ssh_config_parse_uri(cp, NULL, NULL, NULL);
|
||||||
|
+ rv = ssh_config_parse_uri(cp, NULL, NULL, NULL, false);
|
||||||
|
}
|
||||||
|
if (rv != SSH_OK) {
|
||||||
|
goto out;
|
||||||
|
diff --git a/src/config_parser.c b/src/config_parser.c
|
||||||
|
index 9ffc8b8b0..b30e94091 100644
|
||||||
|
--- a/src/config_parser.c
|
||||||
|
+++ b/src/config_parser.c
|
||||||
|
@@ -161,10 +161,14 @@ int ssh_config_get_yesno(char **str, int notfound)
|
||||||
|
return notfound;
|
||||||
|
}
|
||||||
|
|
||||||
|
+/* Parse the URI extracting parts such as a username, hostname and port.
|
||||||
|
+ * If the port is NULL, do not expect port present and be more lax for example
|
||||||
|
+ * with matching IPv6 address which have the same separators as host:port */
|
||||||
|
int ssh_config_parse_uri(const char *tok,
|
||||||
|
- char **username,
|
||||||
|
- char **hostname,
|
||||||
|
- char **port)
|
||||||
|
+ char **username,
|
||||||
|
+ char **hostname,
|
||||||
|
+ char **port,
|
||||||
|
+ bool ignore_port)
|
||||||
|
{
|
||||||
|
char *endp = NULL;
|
||||||
|
long port_n;
|
||||||
|
@@ -210,12 +214,17 @@ int ssh_config_parse_uri(const char *tok,
|
||||||
|
if (endp == NULL) {
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
- } else {
|
||||||
|
- /* Hostnames or aliases expand to the last colon or to the end */
|
||||||
|
+ } else if (!ignore_port) {
|
||||||
|
+ /* Hostnames or aliases expand to the last colon (if port is requested)
|
||||||
|
+ * or to the end */
|
||||||
|
endp = strrchr(tok, ':');
|
||||||
|
if (endp == NULL) {
|
||||||
|
endp = strchr(tok, '\0');
|
||||||
|
}
|
||||||
|
+ } else {
|
||||||
|
+ /* If no port is requested, expand to the end of line
|
||||||
|
+ * (to accommodate the IPv6 addresses) */
|
||||||
|
+ endp = strchr(tok, '\0');
|
||||||
|
}
|
||||||
|
if (tok == endp) {
|
||||||
|
/* Zero-length hostnames are not valid */
|
||||||
|
diff --git a/src/options.c b/src/options.c
|
||||||
|
index 2e73be462..676c49e7a 100644
|
||||||
|
--- a/src/options.c
|
||||||
|
+++ b/src/options.c
|
||||||
|
@@ -634,17 +634,11 @@ int ssh_options_set(ssh_session session, enum ssh_options_e type,
|
||||||
|
ssh_set_error_invalid(session);
|
||||||
|
return -1;
|
||||||
|
} else {
|
||||||
|
- char *username = NULL, *hostname = NULL, *port = NULL;
|
||||||
|
- rc = ssh_config_parse_uri(value, &username, &hostname, &port);
|
||||||
|
+ char *username = NULL, *hostname = NULL;
|
||||||
|
+ rc = ssh_config_parse_uri(value, &username, &hostname, NULL, true);
|
||||||
|
if (rc != SSH_OK) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
- if (port != NULL) {
|
||||||
|
- SAFE_FREE(username);
|
||||||
|
- SAFE_FREE(hostname);
|
||||||
|
- SAFE_FREE(port);
|
||||||
|
- return -1;
|
||||||
|
- }
|
||||||
|
if (username != NULL) {
|
||||||
|
SAFE_FREE(session->opts.username);
|
||||||
|
session->opts.username = username;
|
||||||
|
--
|
||||||
|
GitLab
|
||||||
|
|
||||||
|
|
||||||
|
From f2ec751f09901b9c539ae096f5ee4fc63f305f30 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jakub Jelen <jjelen@redhat.com>
|
||||||
|
Date: Fri, 22 Dec 2023 09:52:18 +0100
|
||||||
|
Subject: [PATCH 2/2] tests: Increase test coverage for IPv6 address parsing as
|
||||||
|
hostnames
|
||||||
|
|
||||||
|
This was an issue in cockpit:
|
||||||
|
|
||||||
|
https://github.com/cockpit-project/cockpit/issues/19772
|
||||||
|
|
||||||
|
Signed-off-by: Jakub Jelen <jjelen@redhat.com>
|
||||||
|
---
|
||||||
|
tests/unittests/torture_config.c | 49 +++++++++++++++++++++++++++++++
|
||||||
|
tests/unittests/torture_options.c | 16 ++++++++++
|
||||||
|
2 files changed, 65 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/tests/unittests/torture_config.c b/tests/unittests/torture_config.c
|
||||||
|
index bc6b08f94..751aa126c 100644
|
||||||
|
--- a/tests/unittests/torture_config.c
|
||||||
|
+++ b/tests/unittests/torture_config.c
|
||||||
|
@@ -2332,6 +2332,53 @@ static void torture_config_make_absolute_no_sshdir(void **state)
|
||||||
|
torture_config_make_absolute_int(state, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
+static void torture_config_parse_uri(void **state)
|
||||||
|
+{
|
||||||
|
+ char *username = NULL;
|
||||||
|
+ char *hostname = NULL;
|
||||||
|
+ char *port = NULL;
|
||||||
|
+ int rc;
|
||||||
|
+
|
||||||
|
+ (void)state; /* unused */
|
||||||
|
+
|
||||||
|
+ rc = ssh_config_parse_uri("localhost", &username, &hostname, &port, false);
|
||||||
|
+ assert_return_code(rc, errno);
|
||||||
|
+ assert_null(username);
|
||||||
|
+ assert_string_equal(hostname, "localhost");
|
||||||
|
+ SAFE_FREE(hostname);
|
||||||
|
+ assert_null(port);
|
||||||
|
+
|
||||||
|
+ rc = ssh_config_parse_uri("1.2.3.4", &username, &hostname, &port, false);
|
||||||
|
+ assert_return_code(rc, errno);
|
||||||
|
+ assert_null(username);
|
||||||
|
+ assert_string_equal(hostname, "1.2.3.4");
|
||||||
|
+ SAFE_FREE(hostname);
|
||||||
|
+ assert_null(port);
|
||||||
|
+
|
||||||
|
+ rc = ssh_config_parse_uri("1.2.3.4:2222", &username, &hostname, &port, false);
|
||||||
|
+ assert_return_code(rc, errno);
|
||||||
|
+ assert_null(username);
|
||||||
|
+ assert_string_equal(hostname, "1.2.3.4");
|
||||||
|
+ SAFE_FREE(hostname);
|
||||||
|
+ assert_string_equal(port, "2222");
|
||||||
|
+ SAFE_FREE(port);
|
||||||
|
+
|
||||||
|
+ rc = ssh_config_parse_uri("[1:2:3::4]:2222", &username, &hostname, &port, false);
|
||||||
|
+ assert_return_code(rc, errno);
|
||||||
|
+ assert_null(username);
|
||||||
|
+ assert_string_equal(hostname, "1:2:3::4");
|
||||||
|
+ SAFE_FREE(hostname);
|
||||||
|
+ assert_string_equal(port, "2222");
|
||||||
|
+ SAFE_FREE(port);
|
||||||
|
+
|
||||||
|
+ /* do not want port */
|
||||||
|
+ rc = ssh_config_parse_uri("1:2:3::4", &username, &hostname, NULL, true);
|
||||||
|
+ assert_return_code(rc, errno);
|
||||||
|
+ assert_null(username);
|
||||||
|
+ assert_string_equal(hostname, "1:2:3::4");
|
||||||
|
+ SAFE_FREE(hostname);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
int torture_run_tests(void)
|
||||||
|
{
|
||||||
|
int rc;
|
||||||
|
@@ -2424,6 +2471,8 @@ int torture_run_tests(void)
|
||||||
|
setup, teardown),
|
||||||
|
cmocka_unit_test_setup_teardown(torture_config_make_absolute_no_sshdir,
|
||||||
|
setup_no_sshdir, teardown),
|
||||||
|
+ cmocka_unit_test_setup_teardown(torture_config_parse_uri,
|
||||||
|
+ setup, teardown),
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/tests/unittests/torture_options.c b/tests/unittests/torture_options.c
|
||||||
|
index 5ba3bdc6a..b07712d86 100644
|
||||||
|
--- a/tests/unittests/torture_options.c
|
||||||
|
+++ b/tests/unittests/torture_options.c
|
||||||
|
@@ -57,6 +57,20 @@ static void torture_options_set_host(void **state) {
|
||||||
|
assert_non_null(session->opts.host);
|
||||||
|
assert_string_equal(session->opts.host, "localhost");
|
||||||
|
|
||||||
|
+ /* IPv4 address */
|
||||||
|
+ rc = ssh_options_set(session, SSH_OPTIONS_HOST, "127.1.1.1");
|
||||||
|
+ assert_true(rc == 0);
|
||||||
|
+ assert_non_null(session->opts.host);
|
||||||
|
+ assert_string_equal(session->opts.host, "127.1.1.1");
|
||||||
|
+ assert_null(session->opts.username);
|
||||||
|
+
|
||||||
|
+ /* IPv6 address */
|
||||||
|
+ rc = ssh_options_set(session, SSH_OPTIONS_HOST, "::1");
|
||||||
|
+ assert_true(rc == 0);
|
||||||
|
+ assert_non_null(session->opts.host);
|
||||||
|
+ assert_string_equal(session->opts.host, "::1");
|
||||||
|
+ assert_null(session->opts.username);
|
||||||
|
+
|
||||||
|
rc = ssh_options_set(session, SSH_OPTIONS_HOST, "guru@meditation");
|
||||||
|
assert_true(rc == 0);
|
||||||
|
assert_non_null(session->opts.host);
|
||||||
|
@@ -64,12 +78,14 @@ static void torture_options_set_host(void **state) {
|
||||||
|
assert_non_null(session->opts.username);
|
||||||
|
assert_string_equal(session->opts.username, "guru");
|
||||||
|
|
||||||
|
+ /* more @ in uri is OK -- it should go to the username */
|
||||||
|
rc = ssh_options_set(session, SSH_OPTIONS_HOST, "at@login@hostname");
|
||||||
|
assert_true(rc == 0);
|
||||||
|
assert_non_null(session->opts.host);
|
||||||
|
assert_string_equal(session->opts.host, "hostname");
|
||||||
|
assert_non_null(session->opts.username);
|
||||||
|
assert_string_equal(session->opts.username, "at@login");
|
||||||
|
+
|
||||||
|
}
|
||||||
|
|
||||||
|
static void torture_options_set_ciphers(void **state) {
|
||||||
|
--
|
||||||
|
GitLab
|
||||||
|
|
1000
libssh.changes
Normal file
1000
libssh.changes
Normal file
File diff suppressed because it is too large
Load Diff
52
libssh.keyring
Normal file
52
libssh.keyring
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
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
|
||||||
|
=m20i
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
167
libssh.spec
Normal file
167
libssh.spec
Normal file
@@ -0,0 +1,167 @@
|
|||||||
|
#
|
||||||
|
# spec file for package libssh
|
||||||
|
#
|
||||||
|
# Copyright (c) 2024 SUSE LLC
|
||||||
|
#
|
||||||
|
# All modifications and additions to the file contributed by third parties
|
||||||
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
|
# upon. The license for this file, and modifications and additions to the
|
||||||
|
# file, is the same license as for the pristine package itself (unless the
|
||||||
|
# license for the pristine package is not an Open Source License, in which
|
||||||
|
# case the license is the MIT License). An "Open Source License" is a
|
||||||
|
# license that conforms to the Open Source Definition (Version 1.9)
|
||||||
|
# published by the Open Source Initiative.
|
||||||
|
|
||||||
|
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
%global flavor @BUILD_FLAVOR@%{nil}
|
||||||
|
%if "%{flavor}" == "test"
|
||||||
|
%define pkg_suffix -test
|
||||||
|
%bcond_without test
|
||||||
|
%else
|
||||||
|
%define pkg_suffix %{nil}
|
||||||
|
%bcond_with test
|
||||||
|
%endif
|
||||||
|
Name: libssh%{pkg_suffix}
|
||||||
|
Version: 0.11.1
|
||||||
|
Release: 0
|
||||||
|
Summary: The SSH library
|
||||||
|
License: LGPL-2.1-or-later
|
||||||
|
Group: Development/Libraries/C and C++
|
||||||
|
URL: https://www.libssh.org
|
||||||
|
Source0: https://www.libssh.org/files/0.11/libssh-%{version}.tar.xz
|
||||||
|
Source1: https://www.libssh.org/files/0.11/libssh-%{version}.tar.xz.asc
|
||||||
|
Source2: https://www.libssh.org/files/0x03D5DF8CFDD3E8E7_libssh_libssh_org_gpgkey.asc#/libssh.keyring
|
||||||
|
Source3: libssh_client.config
|
||||||
|
Source4: libssh_server.config
|
||||||
|
Source99: baselibs.conf
|
||||||
|
BuildRequires: cmake
|
||||||
|
BuildRequires: gcc-c++
|
||||||
|
BuildRequires: krb5-devel
|
||||||
|
BuildRequires: openssl-devel
|
||||||
|
BuildRequires: pkgconfig
|
||||||
|
BuildRequires: xz
|
||||||
|
BuildRequires: zlib-devel
|
||||||
|
# doxygen generated documentation used to be in subpkg
|
||||||
|
Obsoletes: %{name}-devel-doc <= 0.8.6
|
||||||
|
%if %{with test}
|
||||||
|
BuildRequires: libcmocka-devel
|
||||||
|
BuildRequires: openssh
|
||||||
|
%if 0%{?suse_version} > 1550
|
||||||
|
BuildRequires: nss_wrapper
|
||||||
|
BuildRequires: pam_wrapper
|
||||||
|
BuildRequires: socket_wrapper
|
||||||
|
BuildRequires: uid_wrapper
|
||||||
|
%endif
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%description
|
||||||
|
An SSH implementation in the form of a library. With libssh, you can remotely
|
||||||
|
execute programs, transfer files, use a secure and transparent tunnel for your
|
||||||
|
remote programs. It supports SFTP as well.
|
||||||
|
|
||||||
|
This package provides libssh from https://www.libssh.org that should not be
|
||||||
|
confused with libssh2 available from https://www.libssh2.org (libssh2 package)
|
||||||
|
|
||||||
|
%package -n libssh4
|
||||||
|
Summary: SSH library
|
||||||
|
Group: System/Libraries
|
||||||
|
Requires: %{name}-config >= %{version}
|
||||||
|
|
||||||
|
%description -n libssh4
|
||||||
|
An SSH implementation in the form of a library. With libssh, you can remotely
|
||||||
|
execute programs, transfer files, use a secure and transparent tunnel for your
|
||||||
|
remote programs. It supports SFTP as well.
|
||||||
|
|
||||||
|
This package provides libssh from https://www.libssh.org that should not be
|
||||||
|
confused with libssh2 available from https://www.libssh2.org (libssh2 package)
|
||||||
|
|
||||||
|
%package config
|
||||||
|
Summary: SSH library configuration files
|
||||||
|
Group: Productivity/Networking/SSH
|
||||||
|
BuildArch: noarch
|
||||||
|
|
||||||
|
%description config
|
||||||
|
Configuration files for the SSH library.
|
||||||
|
|
||||||
|
%package devel
|
||||||
|
Summary: SSH library development headers
|
||||||
|
Group: Development/Libraries/C and C++
|
||||||
|
Requires: cmake
|
||||||
|
Requires: libssh4 = %{version}
|
||||||
|
|
||||||
|
%description devel
|
||||||
|
Development headers for the SSH library.
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%autosetup -p1 -n libssh-%{version}
|
||||||
|
|
||||||
|
%build
|
||||||
|
%cmake \
|
||||||
|
-DCMAKE_C_FLAGS:STRING="%{optflags} -DOPENSSL_LOAD_CONF" \
|
||||||
|
%if %{with test}
|
||||||
|
-DUNIT_TESTING="ON" \
|
||||||
|
%if 0%{?suse_version} > 1550
|
||||||
|
-DCLIENT_TESTING=ON \
|
||||||
|
-DSERVER_TESTING=ON \
|
||||||
|
%endif
|
||||||
|
%endif
|
||||||
|
-DWITH_GSSAPI=ON \
|
||||||
|
-DWITH_EXAMPLES="OFF" \
|
||||||
|
-DGLOBAL_CLIENT_CONFIG="%{_sysconfdir}/libssh/libssh_client.config" \
|
||||||
|
-DGLOBAL_BIND_CONFIG="%{_sysconfdir}/libssh/libssh_server.config"
|
||||||
|
|
||||||
|
make %{?_smp_mflags}
|
||||||
|
|
||||||
|
%install
|
||||||
|
%if !%{with test}
|
||||||
|
%cmake_install
|
||||||
|
|
||||||
|
install -d -m755 %{buildroot}%{_sysconfdir}/libssh
|
||||||
|
install -m644 %{SOURCE3} %{buildroot}%{_sysconfdir}/libssh/libssh_client.config
|
||||||
|
install -m644 %{SOURCE4} %{buildroot}%{_sysconfdir}/libssh/libssh_server.config
|
||||||
|
|
||||||
|
# Fix incorrect include path, (boo#1211718).
|
||||||
|
%if 0%{?suse_version} > 1600
|
||||||
|
sed -i '/^Include/ s|/etc|/usr/etc|' %{buildroot}%{_sysconfdir}/libssh/libssh_client.config
|
||||||
|
sed -i '/^Include/ s|/etc|/usr/etc|' %{buildroot}%{_sysconfdir}/libssh/libssh_server.config
|
||||||
|
# Don't change the path for crypto-policies libssh.config (bsc#1222716)
|
||||||
|
sed -i '/^Include/ s|/usr/etc/crypto-policies|/etc/crypto-policies|' %{buildroot}%{_sysconfdir}/libssh/libssh_client.config
|
||||||
|
sed -i '/^Include/ s|/usr/etc/crypto-policies|/etc/crypto-policies|' %{buildroot}%{_sysconfdir}/libssh/libssh_server.config
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%check
|
||||||
|
%if %{with test}
|
||||||
|
# Tests are randomly failing when run in parallel
|
||||||
|
%define _smp_mflags %{nil}
|
||||||
|
%ctest
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if !%{with test}
|
||||||
|
%post -n libssh4 -p /sbin/ldconfig
|
||||||
|
%postun -n libssh4 -p /sbin/ldconfig
|
||||||
|
|
||||||
|
%files -n libssh4
|
||||||
|
%doc AUTHORS README CHANGELOG
|
||||||
|
%{_libdir}/libssh.so.*
|
||||||
|
|
||||||
|
%files config
|
||||||
|
%dir %{_sysconfdir}/libssh
|
||||||
|
%config(noreplace) %{_sysconfdir}/libssh/libssh_client.config
|
||||||
|
%config(noreplace) %{_sysconfdir}/libssh/libssh_server.config
|
||||||
|
|
||||||
|
%files devel
|
||||||
|
%{_includedir}/libssh
|
||||||
|
%{_libdir}/libssh.so
|
||||||
|
%{_libdir}/pkgconfig/libssh.pc
|
||||||
|
%dir %{_libdir}/cmake/libssh
|
||||||
|
%{_libdir}/cmake/libssh/libssh-config.cmake
|
||||||
|
%{_libdir}/cmake/libssh/libssh-config-relwithdebinfo.cmake
|
||||||
|
%{_libdir}/cmake/libssh/libssh-config-version.cmake
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%changelog
|
4
libssh_client.config
Normal file
4
libssh_client.config
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
# Parse system-wide crypto configuration file
|
||||||
|
Include /etc/crypto-policies/back-ends/libssh.config
|
||||||
|
# Parse OpenSSH configuration file for consistency
|
||||||
|
Include /etc/ssh/ssh_config
|
2
libssh_server.config
Normal file
2
libssh_server.config
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# Parse system-wide crypto configuration file
|
||||||
|
Include /etc/crypto-policies/back-ends/libssh.config
|
Reference in New Issue
Block a user