Den 1 aug 2014 13:01 skrev "Patrik Flykt" <patrik.fl...@linux.intel.com>:
>
> In normal cases when an error reply is received from wpa_supplicant,
> the code uses a DBusMessageIter struct from the stack and initializes
> it to point to the error return message in gsupplicant/dbus.c,
> method_call_reply(). When passed to parse_supplicant_error(), the
> iterator is valid, but contains no data and everything works fine.
>
> When a gsupplicant pending call is cancelled by ConnMan, the
> cancellation code will call the callback instead with a NULL iterator.
> Explicitely catch this NULL iterator and return the default -ECANCELED
> to the caller instead of relying on the specific way the dbus library
> was compiled - either detecting NULL pointers or just plainly crashing.
>
> The fix is based on a very similar one by Rickhard Röjfors but was made
> to be even more explicit and accompanied by a longer explanation.

Except from that my name was incorrectly spelled, I ack this.

A stack trace says more than 1000 words ;-)

> ---
>  gsupplicant/supplicant.c | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/gsupplicant/supplicant.c b/gsupplicant/supplicant.c
> index d26b6e2..1886a40 100644
> --- a/gsupplicant/supplicant.c
> +++ b/gsupplicant/supplicant.c
> @@ -3792,6 +3792,9 @@ static int parse_supplicant_error(DBusMessageIter
*iter)
>         int err = -ECANCELED;
>         char *key;
>
> +       if (!iter)
> +               return err;
> +
>         /* If the given passphrase is malformed wpa_s returns
>          * "invalid message format" but this error should be interpreted
as
>          * invalid-key.
> --
> 1.9.1
>
> _______________________________________________
> connman mailing list
> connman@connman.net
> https://lists.connman.net/mailman/listinfo/connman
_______________________________________________
connman mailing list
connman@connman.net
https://lists.connman.net/mailman/listinfo/connman

Reply via email to