diff options
author | Antenore Gatta (tmow) <antenore@simbiosi.org> | 2021-07-14 09:59:40 +0300 |
---|---|---|
committer | Antenore Gatta (tmow) <antenore@simbiosi.org> | 2021-07-14 09:59:40 +0300 |
commit | dc40bd38d488fbf9774d6fe0163df9f602919a04 (patch) | |
tree | d6053bf83cf66eb355cbe868d6251be214ee5fa2 | |
parent | cf3c71251609e9c9b572e0b1f4e456138f4f24a7 (diff) | |
parent | 45cb7885430c3504405bd8a729dc2f54849ec196 (diff) |
Merge branch 'issue/2555-search-bar-sanitize' into 'master'
Nullify host if qucikconnect isn't a valid address
Closes #2555
See merge request Remmina/Remmina!2298
-rw-r--r-- | src/remmina_main.c | 13 | ||||
-rw-r--r-- | src/remmina_public.c | 5 |
2 files changed, 13 insertions, 5 deletions
diff --git a/src/remmina_main.c b/src/remmina_main.c index 1b02296ea..b69abfda1 100644 --- a/src/remmina_main.c +++ b/src/remmina_main.c @@ -665,7 +665,7 @@ static void remmina_main_load_files() gtk_statusbar_push(remminamain->statusbar_main, context_id, buf); } -void remmina_main_load_files_cb() +void remmina_main_load_files_cb(GtkEntry *entry, char *string, gpointer user_data) { TRACE_CALL(__func__); remmina_main_load_files(); @@ -755,7 +755,6 @@ void remmina_main_on_action_connection_new(GSimpleAction *action, GVariant *para } static gboolean remmina_main_search_key_event (GtkWidget *search_entry, GdkEventKey *event, gpointer user_data) - { TRACE_CALL(__func__); if (event->keyval == GDK_KEY_Escape) { @@ -1132,6 +1131,16 @@ static gboolean remmina_main_quickconnect(void) remminafile = remmina_file_new(); server = g_strdup(gtk_entry_get_text(remminamain->entry_quick_connect_server)); + if (g_hostname_to_ascii(server) == NULL) + return FALSE; + /* If server contain /, e.g. vnc://, it won't connect + * We could search for an array of invalid characters, but + * it's better to find a way to correctly parse and validate addresses + */ + if (g_strrstr(server, "/") != NULL) + return FALSE; + //if (g_str_has_suffix (server, "/")) + //return FALSE; if (is_empty(server)) return FALSE; diff --git a/src/remmina_public.c b/src/remmina_public.c index 5b635c9c8..596281514 100644 --- a/src/remmina_public.c +++ b/src/remmina_public.c @@ -434,14 +434,13 @@ void remmina_public_get_server_port(const gchar *server, gint defaultport, gchar nul_terminated_server = g_strdup (server); g_debug ("(%s) - Parsing server: %s, default port: %d", __func__, server, defaultport); - address = (GNetworkAddress*)g_network_address_parse ((const gchar *) nul_terminated_server, defaultport, &err); + address = (GNetworkAddress*)g_network_address_parse ((const gchar *)nul_terminated_server, defaultport, &err); if (address == NULL) { g_debug ("(%s) - Error converting server string: %s, with error: %s", __func__, nul_terminated_server, err->message); + *host = NULL; if (err) g_error_free(err); - //g_debug ("(%s) - Using remmina_public_get_server_port_old to parse the address", __func__); - //remmina_public_get_server_port_old (server, defaultport, host, port); } else { *host = g_strdup(g_network_address_get_hostname (address)); |