On Fri, 2015-09-04 at 10:34 +0200, Marcus Folkesson wrote:
> dbus library calls abort() if it got a non-expected type passed to it.
> ---
> Changelog:
> 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..9b67db6 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;
> +                     }
> +

An ')' is missing here:

  CC       src/src_connmand-agent-connman.o
src/agent-connman.c: In function ‘request_input_passphrase_reply’:
src/agent-connman.c:115:46: error: comparison between pointer and integer 
[-Werror]
    if (dbus_message_iter_get_arg_type(&entry != DBUS_TYPE_STRING) {
                                              ^

Cheers,

        Patrik


>                       dbus_message_iter_get_basic(&value, &identity);
>  
>               } 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;
> +
>                       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, &passphrase);
>  
>               } else if (g_str_equal(key, "WPS")) {
> @@ -128,7 +142,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, &wpspin);
>                       break;
>               } else if (g_str_equal(key, "Name")) {
> @@ -136,7 +157,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, &name);
>                       name_len = strlen(name);
>               } else if (g_str_equal(key, "SSID")) {
> @@ -144,16 +172,25 @@ static void request_input_passphrase_reply(DBusMessage 
> *reply, void *user_data)
>  
>                       dbus_message_iter_next(&entry);
>                       if (dbus_message_iter_get_arg_type(&entry)
> -                                                     != DBUS_TYPE_VARIANT)
> +                                                     != DBUS_TYPE_VARIANT) {
> +                             error = CONNMAN_ERROR_INTERFACE 
> ".InvalidArguments";
> +                             values_received = false;
>                               break;
> +                     }
>                       dbus_message_iter_recurse(&entry, &value);
>                       if (dbus_message_iter_get_arg_type(&value)
> -                                                     != DBUS_TYPE_ARRAY)
> +                                                     != DBUS_TYPE_ARRAY) {
> +                             error = CONNMAN_ERROR_INTERFACE 
> ".InvalidArguments";
> +                             values_received = false;
>                               break;
> +                     }
>                       dbus_message_iter_recurse(&value, &array_iter);
>                       if (dbus_message_iter_get_arg_type(&array_iter)
> -                                                     != DBUS_TYPE_BYTE)
> +                                                     != DBUS_TYPE_BYTE) {
> +                             error = CONNMAN_ERROR_INTERFACE 
> ".InvalidArguments";
> +                             values_received = false;
>                               break;
> +                     }
>                       dbus_message_iter_get_fixed_array(&array_iter, &name,
>                                                       &name_len);
>               }
> @@ -401,7 +438,14 @@ static void request_input_login_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, &username);
>  
>               } else if (g_str_equal(key, "Password")) {
> @@ -409,7 +453,14 @@ static void request_input_login_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, &password);
>               }
>  
> @@ -717,7 +768,13 @@ static void request_peer_authorization_reply(DBusMessage 
> *reply,
>                       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";
> +                             break;
> +                     }
> +
>                       dbus_message_iter_get_basic(&value, &wpspin);
>                       break;
>               }


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

Reply via email to