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