[network-manager-applet/th/rh962449_link_local_dns_server: 3/4] editor: disallow unexpected characters for DNS servers
- From: Thomas Haller <thaller src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [network-manager-applet/th/rh962449_link_local_dns_server: 3/4] editor: disallow unexpected characters for DNS servers
- Date: Fri, 27 Sep 2013 22:04:00 +0000 (UTC)
commit c805639fee30173a649d307669baea682b4e58fa
Author: Thomas Haller <thaller redhat com>
Date: Fri Sep 27 23:46:58 2013 +0200
editor: disallow unexpected characters for DNS servers
Do not allow to input unexpected (ascii) characters as DNS servers,
both for IPv4 and IPv6.
This especially disallows to add a %scope-id suffix for IPv6 link local
addresses (because '%' is not allowed). The reason to disallow this is
that link local addresses are always scoped to the connecting device
anyway, so this parameter would get ignored anyway.
This is related to bug
https://bugzilla.redhat.com/show_bug.cgi?id=962449
Signed-off-by: Thomas Haller <thaller redhat com>
src/connection-editor/page-ip4.c | 25 +++++++++++++++++++++++++
src/connection-editor/page-ip6.c | 24 ++++++++++++++++++++++++
2 files changed, 49 insertions(+), 0 deletions(-)
---
diff --git a/src/connection-editor/page-ip4.c b/src/connection-editor/page-ip4.c
index 7cdcb6c..02cf88b 100644
--- a/src/connection-editor/page-ip4.c
+++ b/src/connection-editor/page-ip4.c
@@ -638,6 +638,30 @@ ip_address_filter_cb (GtkEntry * entry,
g_free (result);
}
+static gboolean
+_char_is_ascii_dns_servers (char character)
+{
+ return utils_char_is_ascii_ip4_address (character) ||
+ character == ' ' ||
+ character == ',' ||
+ character == ':' ||
+ character == ';';
+}
+
+static void
+dns_servers_filter_cb (GtkEntry * entry,
+ const gchar *text,
+ gint length,
+ gint * position,
+ gpointer user_data)
+{
+ utils_filter_editable_on_insert_text (GTK_EDITABLE (entry),
+ text, length, position, user_data,
+ _char_is_ascii_dns_servers,
+ dns_servers_filter_cb,
+ NULL, NULL);
+}
+
static void
delete_text_cb (GtkEditable *editable,
gint start_pos,
@@ -953,6 +977,7 @@ finish_setup (CEPageIP4 *self, gpointer unused, GError *error, gpointer user_dat
g_signal_connect (selection, "changed", G_CALLBACK (list_selection_changed), priv->addr_delete);
g_signal_connect_swapped (priv->dns_servers, "changed", G_CALLBACK (ce_page_changed), self);
+ g_signal_connect (priv->dns_servers, "insert-text", G_CALLBACK (dns_servers_filter_cb), self);
g_signal_connect_swapped (priv->dns_searches, "changed", G_CALLBACK (ce_page_changed), self);
method_changed (priv->method, self);
diff --git a/src/connection-editor/page-ip6.c b/src/connection-editor/page-ip6.c
index 0db0480..25520e8 100644
--- a/src/connection-editor/page-ip6.c
+++ b/src/connection-editor/page-ip6.c
@@ -618,6 +618,29 @@ ip_address_filter_cb (GtkEditable *entry,
g_free (result);
}
+static gboolean
+_char_is_ascii_dns_servers (char character)
+{
+ return utils_char_is_ascii_ip6_address (character) ||
+ character == ' ' ||
+ character == ',' ||
+ character == ';';
+}
+
+static void
+dns_servers_filter_cb (GtkEntry * entry,
+ const gchar *text,
+ gint length,
+ gint * position,
+ gpointer user_data)
+{
+ utils_filter_editable_on_insert_text (GTK_EDITABLE (entry),
+ text, length, position, user_data,
+ _char_is_ascii_dns_servers,
+ dns_servers_filter_cb,
+ NULL, NULL);
+}
+
static void
delete_text_cb (GtkEditable *editable,
gint start_pos,
@@ -917,6 +940,7 @@ finish_setup (CEPageIP6 *self, gpointer unused, GError *error, gpointer user_dat
g_signal_connect (selection, "changed", G_CALLBACK (list_selection_changed), priv->addr_delete);
g_signal_connect_swapped (priv->dns_servers, "changed", G_CALLBACK (ce_page_changed), self);
+ g_signal_connect (priv->dns_servers, "insert-text", G_CALLBACK (dns_servers_filter_cb), self);
g_signal_connect_swapped (priv->dns_searches, "changed", G_CALLBACK (ce_page_changed), self);
method_changed (priv->method, self);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]