Hi Julien,

> If gsupplicant sends a passphrase shorter than 7 characters,
> wpa_supplicant return an error "invalid message format",
> parsing this error avoids an endless loop of connection failed.
> ---
>  gsupplicant/supplicant.c |    9 +++++++--
>  1 files changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/gsupplicant/supplicant.c b/gsupplicant/supplicant.c
> index 5db1fcd..2a4ff96 100644
> --- a/gsupplicant/supplicant.c
> +++ b/gsupplicant/supplicant.c
> @@ -2684,10 +2684,15 @@ static int parse_supplicant_error(DBusMessageIter 
> *iter)
>       int err = -ECANCELED;
>       char *key;
>  
> +     /* If the given passphrase is under 7 characters wpa_s return
> +      * "invalid message format" but this error should be interpreted as
> +      * invalid-key.
> +      */
>       while (dbus_message_iter_get_arg_type(iter) == DBUS_TYPE_STRING) {
>               dbus_message_iter_get_basic(iter, &key);
> -             if (strncmp(key, "psk", 4) == 0 ||
> -                     strncmp(key, "wep_key", 7) == 0) {
> +             if (strncmp(key, "psk", 3) == 0 ||
> +                             strncmp(key, "wep_key", 7) == 0 ||
> +                             strcmp(key, "invalid message format") == 0) {
>                       err = -ENOKEY;
>                       break;
>               }

why are we allowing to send these short passphrases anyway. PSKs have a
minimum and maximum length. We should reject too short or too long
passphrases right from the agent callback. Especially since we told the
UI that expecting as PSK.

And for WEP keys the same thing. Only a few length are valid. And we
tell the UI that we want a WEP key. If it sends back invalid length, we
should not even other trying to connect.

Regards

Marcel


_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman

Reply via email to