Hi,

On Mon, 2015-09-07 at 09:56 +0200, Marcus Folkesson wrote:
> dbus library calls abort() if it got a non-expected type passed to it.
> ---
> Changelog:
> v3: Fix embarrassing typo
> v2: Check against specific type instead of all basic types
> 
>  src/agent-connman.c | 63 
> ++++++++++++++++++++++++++++++++++++++++++++++++++---
>  1 file changed, 60 insertions(+), 3 deletions(-)
> 
> diff --git a/src/agent-connman.c b/src/agent-connman.c
> index 2d714b5..341e253 100644
> --- a/src/agent-connman.c
> +++ b/src/agent-connman.c
> @@ -110,7 +110,14 @@ static void request_input_passphrase_reply(DBusMessage 
> *reply, void *user_data)
>                       if (dbus_message_iter_get_arg_type(&entry)
>                                                       != DBUS_TYPE_VARIANT)
>                               break;
> +
>                       dbus_message_iter_recurse(&entry, &value);
> +                     if (dbus_message_iter_get_arg_type(&entry) != 
> DBUS_TYPE_STRING) {
> +                             error = CONNMAN_ERROR_INTERFACE 
> ".InvalidArguments";
> +                             values_received = false;
> +                             break;
> +                     }
> +
>                       dbus_message_iter_get_basic(&value, &identity);

Down here the basic value we're extracting is from &value, which should
be the one tested for DBUS_TYPE_STRING. But the DBUS_TYPE_STRING test
was conducted on &entry above, which is always false as the &entry is a
DBUS_TYPE_VARIANT.

>  
>               } else if (g_str_equal(key, "Passphrase")) {
> @@ -118,7 +125,14 @@ static void request_input_passphrase_reply(DBusMessage 
> *reply, void *user_data)
>                       if (dbus_message_iter_get_arg_type(&entry)
>                                                       != DBUS_TYPE_VARIANT)
>                               break;

The already existing error handling skips entries that are not variants,
so it should also have error set. Can you add this to the patch?

Looking at the code, values_received is not very useful either here or
in src/service.c request_input_cb(), so I was thinking it need not be
touched at all but rather removed in some upcoming future patch set.

A few lines below, wps = true should be set only if WPS information was
successfully received. Can you add this to the patch also?

Cheers,

        Patrik

_______________________________________________
connman mailing list
connman@connman.net
https://lists.connman.net/mailman/listinfo/connman

Reply via email to