neard: RequestOOB() method sends empty dictionary
authorTomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
Fri, 15 Mar 2013 07:04:19 +0000 (09:04 +0200)
committerPatrik Flykt <patrik.flykt@linux.intel.com>
Mon, 18 Mar 2013 13:00:44 +0000 (15:00 +0200)
Reported by Ravikumar Veeramally

plugins/neard.c

index 85cf06b..83561fe 100644 (file)
@@ -172,6 +172,9 @@ static int parse_request_oob_params(DBusMessage *message,
        const char *key;
        int arg_type;
 
+       if (tlv_msg == NULL || length == NULL)
+               return -EINVAL;
+
        dbus_message_iter_init(message, &iter);
 
        if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY)
@@ -182,9 +185,6 @@ static int parse_request_oob_params(DBusMessage *message,
        if (arg_type != DBUS_TYPE_DICT_ENTRY)
                return -EINVAL;
 
-       if (tlv_msg == NULL && length == NULL)
-               return 0;
-
        while (arg_type != DBUS_TYPE_INVALID) {
                dbus_message_iter_recurse(&array, &dict_entry);
                if (dbus_message_iter_get_arg_type(&dict_entry) !=
@@ -254,9 +254,13 @@ out:
 static DBusMessage *request_oob_method(DBusConnection *dbus_conn,
                                        DBusMessage *message, void *user_data)
 {
+       DBusMessageIter iter;
+
        DBG("");
 
-       if (parse_request_oob_params(message, NULL, NULL) != 0)
+       dbus_message_iter_init(message, &iter);
+
+       if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY)
                return get_reply_on_error(message, EINVAL);
 
        return create_request_oob_reply(message);