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
[email protected]
https://lists.connman.net/mailman/listinfo/connman