diff --git a/ChangeLog b/ChangeLog index 61526dd6a3..992922ac65 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-09-30 Dan Williams + + * info-daemon/NetworkManagerInfo.c + info-daemon/NetworkManagerInfoDbus.c + test/nminfotest.c + - Escape ESSIDs in gconf + Wed Sep 29 18:18:24 2004 Jonathan Blandford * configure.in: Add a temporary --enable-notification-icon. This diff --git a/info-daemon/NetworkManagerInfo.c b/info-daemon/NetworkManagerInfo.c index cf9f32c977..654fe6f23f 100644 --- a/info-daemon/NetworkManagerInfo.c +++ b/info-daemon/NetworkManagerInfo.c @@ -37,6 +37,7 @@ #include #include #include +#include #include "config.h" #include "NetworkManagerInfoDbus.h" #include "NetworkManagerInfo.h" @@ -66,6 +67,7 @@ void nmi_gconf_notify_callback (GConfClient *client, guint connection_id, GConfE { char *network = g_strdup ((key + path_len)); char *slash_pos; + char *escaped_network; /* If its a key under the network name, zero out the slash so we * are left with only the network name. @@ -73,7 +75,9 @@ void nmi_gconf_notify_callback (GConfClient *client, guint connection_id, GConfE if ((slash_pos = strchr (network, '/'))) *slash_pos = '\0'; + escaped_network = gnome_vfs_escape_string (network); nmi_dbus_signal_update_network (info->connection, network, NETWORK_TYPE_ALLOWED); + g_free (escaped_network); g_free (network); } } diff --git a/info-daemon/NetworkManagerInfoDbus.c b/info-daemon/NetworkManagerInfoDbus.c index a9ab7e624e..8188c3c946 100644 --- a/info-daemon/NetworkManagerInfoDbus.c +++ b/info-daemon/NetworkManagerInfoDbus.c @@ -25,6 +25,7 @@ #include #include #include +#include #include "NetworkManagerInfo.h" #include "NetworkManagerInfoDbus.h" @@ -98,7 +99,6 @@ static void nmi_dbus_get_key_for_network (NMIAppInfo *info, DBusMessage *message DBUS_TYPE_STRING, &network, DBUS_TYPE_INVALID)) { -fprintf( stderr, "getUserKey\n"); nmi_passphrase_dialog_show (device, network, info); dbus_free (device); @@ -230,10 +230,12 @@ static DBusMessage *nmi_dbus_get_networks (NMIAppInfo *info, DBusMessage *messag */ while (element) { - gchar key[100]; + char key[100]; GConfValue *value; + char *escaped_network = gnome_vfs_escape_string ((char *)(element->data)); - g_snprintf (&key[0], 99, "%s/essid", (char *)(element->data)); + g_snprintf (&key[0], 99, "%s/essid", escaped_network); + g_free (escaped_network); value = gconf_client_get (info->gconf_client, key, NULL); if (value && gconf_value_get_string (value)) { @@ -275,6 +277,7 @@ static DBusMessage *nmi_dbus_get_network_timestamp (NMIAppInfo *info, DBusMessag GConfValue *value; DBusError error; NMINetworkType type; + char *escaped_network; g_return_val_if_fail (info != NULL, NULL); g_return_val_if_fail (message != NULL, NULL); @@ -290,7 +293,9 @@ static DBusMessage *nmi_dbus_get_network_timestamp (NMIAppInfo *info, DBusMessag } /* Grab timestamp key for our access point from GConf */ - key = g_strdup_printf ("%s/%s/timestamp", NMI_GCONF_WIRELESS_NETWORKS_PATH, network); + escaped_network = gnome_vfs_escape_string (network); + key = g_strdup_printf ("%s/%s/timestamp", NMI_GCONF_WIRELESS_NETWORKS_PATH, escaped_network); + g_free (escaped_network); value = gconf_client_get (info->gconf_client, key, NULL); g_free (key); @@ -326,6 +331,7 @@ static DBusMessage *nmi_dbus_get_network_essid (NMIAppInfo *info, DBusMessage *m GConfValue *value; DBusError error; NMINetworkType type; + char *escaped_network; g_return_val_if_fail (info != NULL, NULL); g_return_val_if_fail (message != NULL, NULL); @@ -341,7 +347,9 @@ static DBusMessage *nmi_dbus_get_network_essid (NMIAppInfo *info, DBusMessage *m } /* Grab essid key for our access point from GConf */ - key = g_strdup_printf ("%s/%s/essid", NMI_GCONF_WIRELESS_NETWORKS_PATH, network); + escaped_network = gnome_vfs_escape_string (network); + key = g_strdup_printf ("%s/%s/essid", NMI_GCONF_WIRELESS_NETWORKS_PATH, escaped_network); + g_free (escaped_network); value = gconf_client_get (info->gconf_client, key, NULL); g_free (key); @@ -377,6 +385,7 @@ static DBusMessage *nmi_dbus_get_network_key (NMIAppInfo *info, DBusMessage *mes GConfValue *value; DBusError error; NMINetworkType type; + char *escaped_network; g_return_val_if_fail (info != NULL, NULL); g_return_val_if_fail (message != NULL, NULL); @@ -392,7 +401,9 @@ static DBusMessage *nmi_dbus_get_network_key (NMIAppInfo *info, DBusMessage *mes } /* Grab user-key key for our access point from GConf */ - key = g_strdup_printf ("%s/%s/key", NMI_GCONF_WIRELESS_NETWORKS_PATH, network); + escaped_network = gnome_vfs_escape_string (network); + key = g_strdup_printf ("%s/%s/key", NMI_GCONF_WIRELESS_NETWORKS_PATH, escaped_network); + g_free (escaped_network); value = gconf_client_get (info->gconf_client, key, NULL); g_free (key); @@ -425,6 +436,7 @@ static DBusMessage *nmi_dbus_get_network_trusted (NMIAppInfo *info, DBusMessage GConfValue *value; DBusError error; NMINetworkType type; + char *escaped_network; g_return_val_if_fail (info != NULL, NULL); g_return_val_if_fail (message != NULL, NULL); @@ -440,7 +452,9 @@ static DBusMessage *nmi_dbus_get_network_trusted (NMIAppInfo *info, DBusMessage } /* Grab user-key key for our access point from GConf */ - key = g_strdup_printf ("%s/%s/trusted", NMI_GCONF_WIRELESS_NETWORKS_PATH, network); + escaped_network = gnome_vfs_escape_string (network); + key = g_strdup_printf ("%s/%s/trusted", NMI_GCONF_WIRELESS_NETWORKS_PATH, escaped_network); + g_free (escaped_network); value = gconf_client_get (info->gconf_client, key, NULL); g_free (key); diff --git a/test/nminfotest.c b/test/nminfotest.c index 8c92b408fe..20996b7a21 100644 --- a/test/nminfotest.c +++ b/test/nminfotest.c @@ -37,8 +37,7 @@ typedef enum { NETWORK_TYPE_UNKNOWN = 0, - NETWORK_TYPE_TRUSTED, - NETWORK_TYPE_PREFERRED, + NETWORK_TYPE_ALLOWED, NETWORK_TYPE_INVALID, NETWORK_TYPE_DEVICE } NMINetworkType; @@ -95,7 +94,7 @@ char * get_network_string_property (DBusConnection *connection, char *network, c return (ret_string); } -int get_network_prio (DBusConnection *connection, char *network, NMINetworkType type) +gboolean get_network_trusted (DBusConnection *connection, char *network, NMINetworkType type) { DBusMessage *message; DBusMessage *reply; @@ -108,7 +107,7 @@ int get_network_prio (DBusConnection *connection, char *network, NMINetworkType message = dbus_message_new_method_call (NMI_DBUS_NMI_NAMESPACE, NMI_DBUS_NMI_OBJECT_PATH_PREFIX, NMI_DBUS_NMI_NAMESPACE, - "getNetworkPriority"); + "getNetworkTrusted"); if (message == NULL) { fprintf (stderr, "Couldn't allocate the dbus message\n"); @@ -133,14 +132,17 @@ int get_network_prio (DBusConnection *connection, char *network, NMINetworkType } /* now analyze reply */ - dbus_message_iter_init (reply, &iter); - int dbus_type; - dbus_type = dbus_message_iter_get_uint32 (&iter); + gboolean trusted = FALSE; + dbus_error_init (&error); + if (!dbus_message_get_args (reply, &error, DBUS_TYPE_BOOLEAN, &trusted, DBUS_TYPE_INVALID)) + trusted = FALSE; + if (dbus_error_is_set (&error)) + dbus_error_free (&error); dbus_message_unref (reply); dbus_message_unref (message); - return (dbus_type); + return (trusted); } @@ -209,7 +211,7 @@ void get_networks_of_type (DBusConnection *connection, NMINetworkType type) char *essid = get_network_string_property (connection, networks[i], "getNetworkEssid", type); char *key = get_network_string_property (connection, networks[i], "getNetworkKey", type); - fprintf( stderr, " %d:\t%s\t%s\n", get_network_prio (connection, networks[i], type), essid, key); + fprintf(stderr, " %s\t%s\t%s\n", essid, key, get_network_trusted (connection, networks[i], type) ? "trusted" : "untrusted"); } } @@ -345,8 +347,7 @@ int main( int argc, char *argv[] ) exit (1); } - get_networks_of_type (connection, NETWORK_TYPE_TRUSTED); - get_networks_of_type (connection, NETWORK_TYPE_PREFERRED); + get_networks_of_type (connection, NETWORK_TYPE_ALLOWED); get_networks_of_type (connection, NETWORK_TYPE_DEVICE); get_user_key_for_network (connection);