summaryrefslogtreecommitdiff
diff options
Diffstat (limited to 'net-libs/libssh/files/libssh-0.10.6-ipv6-hostname-parsing.patch')
-rw-r--r--net-libs/libssh/files/libssh-0.10.6-ipv6-hostname-parsing.patch135
1 files changed, 0 insertions, 135 deletions
diff --git a/net-libs/libssh/files/libssh-0.10.6-ipv6-hostname-parsing.patch b/net-libs/libssh/files/libssh-0.10.6-ipv6-hostname-parsing.patch
deleted file mode 100644
index 4d62ca5e9459..000000000000
--- a/net-libs/libssh/files/libssh-0.10.6-ipv6-hostname-parsing.patch
+++ /dev/null
@@ -1,135 +0,0 @@
-From 4f997aee7c7d7ea346b3e8ba505da0b7601ff318 Mon Sep 17 00:00:00 2001
-From: Jakub Jelen <jjelen@redhat.com>
-Date: Fri, 22 Dec 2023 10:32:40 +0100
-Subject: [PATCH] Fix regression in IPv6 addresses in hostname parsing
-
-Signed-off-by: Jakub Jelen <jjelen@redhat.com>
-Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
----
- include/libssh/config_parser.h | 11 ++++++++---
- src/config.c | 4 ++--
- src/config_parser.c | 16 +++++++++++-----
- src/options.c | 10 ++--------
- 4 files changed, 23 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..5f30cd3e1 100644
---- a/src/config_parser.c
-+++ b/src/config_parser.c
-@@ -162,9 +162,10 @@ int ssh_config_get_yesno(char **str, int notfound)
- }
-
- 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 +211,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
-