>diff --git a/plugins/supplicant.c b/plugins/supplicant.c
>index e9612f3..d955f6f 100644
>--- a/plugins/supplicant.c
>+++ b/plugins/supplicant.c
>@@ -929,7 +929,8 @@ static void extract_ssid(DBusMessageIter *value,
> {
> DBusMessageIter array;
> unsigned char *ssid;
>- int ssid_len;
>+ int ssid_len, i;
>+ char *d;
>
> dbus_message_iter_recurse(value, &array);
> dbus_message_iter_get_fixed_array(&array, &ssid, &ssid_len);
>@@ -948,7 +949,12 @@ static void extract_ssid(DBusMessageIter *value,
> if (result->name == NULL)
> return;
>
>- memcpy(result->name, ssid, ssid_len);
>+ d = result->name;
>+ for (i = 0; i < ssid_len; i++)
>+ if (g_ascii_isprint(ssid[i]))
>+ *d++ = ssid[i];
>+
>+ *d = '\0';
> }
>
> static void extract_wpaie(DBusMessageIter *value,
>diff --git a/src/device.c b/src/device.c
>index a2507b5..fb53e72 100644
>--- a/src/device.c
>+++ b/src/device.c
>@@ -468,6 +468,20 @@ 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,
>+ unsigned int ssid_len)
>+{
>+ unsigned int i;
>+ char *d = name;
>+
>+ for (i = 0; i < ssid_len; i++)
>+ if (g_ascii_isprint(ssid[i]))
>+ *d++ = ssid[i];
>+
>+ *d = '\0';
>+ return name;
>+}
>+
> static DBusMessage *join_network(DBusConnection *conn,
> DBusMessage *msg, void *data)
> {
>@@ -517,10 +531,22 @@ static DBusMessage *join_network(DBusConnection *conn,
> switch (dbus_message_iter_get_arg_type(&value)) {
> case DBUS_TYPE_STRING:
> dbus_message_iter_get_basic(&value, &str);
>- if (g_str_equal(key, "WiFi.SSID") == TRUE)
>+ if (g_str_equal(key, "WiFi.SSID") == TRUE) {
>+ char *name;
>+
> connman_network_set_blob(network, key,
> str, strlen(str));
>- else
>+ name = g_try_malloc0(strlen(str) + 1);
>+ if (name == NULL)
>+ return __connman_error_failed(msg,
>+ -ENOMEM);
>+
>+ name = build_network_name((char *)str, name,
>+ strlen(str));
>+ connman_network_set_name(network, name);
>+ g_free(name);
>+
>+ } else
> connman_network_set_string(network, key, str);
> break;
> }
The patch is ok to me.
I have also ever submit a patch to fix the issue. Still a small part of the
patch has not been accepted by Marcel.
I think the patch is also critical to fix the bug. Could you have a look at it.
The mail title is:
"patch to fix connect hidden Guest issue. bug 3445"
_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman