Fix to replace unprintable characters with a white space
authorMarcel Holtmann <marcel@holtmann.org>
Fri, 3 Jul 2009 17:19:27 +0000 (10:19 -0700)
committerMarcel Holtmann <marcel@holtmann.org>
Fri, 3 Jul 2009 17:19:27 +0000 (10:19 -0700)
plugins/supplicant.c
src/device.c

index a9cc056..5a68231 100644 (file)
@@ -934,7 +934,6 @@ static void extract_ssid(DBusMessageIter *value,
        DBusMessageIter array;
        unsigned char *ssid;
        int ssid_len, i;
-       char *d;
 
        dbus_message_iter_recurse(value, &array);
        dbus_message_iter_get_fixed_array(&array, &ssid, &ssid_len);
@@ -953,12 +952,12 @@ static void extract_ssid(DBusMessageIter *value,
        if (result->name == NULL)
                return;
 
-       d =  result->name;
-       for (i = 0; i < ssid_len; i++)
+       for (i = 0; i < ssid_len; i++) {
                if (g_ascii_isprint(ssid[i]))
-                       *d++ = ssid[i];
-
-       *d = '\0';
+                       result->name[i] = ssid[i];
+               else
+                       result->name[i] = ' ';
+       }
 }
 
 static void extract_wpaie(DBusMessageIter *value,
index 63d5209..82901a7 100644 (file)
@@ -468,18 +468,17 @@ static char *build_group(const unsigned char *ssid, unsigned int ssid_len,
        return g_string_free(str, FALSE);
 }
 
-static char *build_network_name(const char *ssid, char *name,
+static void convert_name(const char *ssid, char *name,
                                                unsigned int ssid_len)
 {
        unsigned int i;
-       char *d = name;
 
-       for (i = 0; i < ssid_len; i++)
+       for (i = 0; i < ssid_len; i++) {
                if (g_ascii_isprint(ssid[i]))
-                       *d++ = ssid[i];
-
-       *d = '\0';
-       return name;
+                       name[i] = ssid[i];
+               else
+                       name[i] = ' ';
+       }
 }
 
 static DBusMessage *join_network(DBusConnection *conn,
@@ -541,8 +540,7 @@ static DBusMessage *join_network(DBusConnection *conn,
                                        return __connman_error_failed(msg,
                                                                      -ENOMEM);
 
-                               name = build_network_name((char *) str, name,
-                                                                 strlen(str));
+                               convert_name((char *) str, name, strlen(str));
                                connman_network_set_name(network, name);
                                g_free(name);