Merge "dnsproxy: send a response including queries" into tizen
[platform/upstream/connman.git] / src / agent-connman.c
index 04f95df..e4850a8 100755 (executable)
@@ -100,73 +100,101 @@ static void request_input_passphrase_reply(DBusMessage *reply, void *user_data)
                DBusMessageIter entry, value;
 
                dbus_message_iter_recurse(&dict, &entry);
-               if (dbus_message_iter_get_arg_type(&entry) != DBUS_TYPE_STRING)
+               if (dbus_message_iter_get_arg_type(&entry) != DBUS_TYPE_STRING) {
+                       error = CONNMAN_ERROR_INTERFACE ".InvalidArguments";
                        break;
+               }
 
                dbus_message_iter_get_basic(&entry, &key);
 
                if (g_str_equal(key, "Identity")) {
                        dbus_message_iter_next(&entry);
                        if (dbus_message_iter_get_arg_type(&entry)
-                                                       != DBUS_TYPE_VARIANT)
+                                                       != DBUS_TYPE_VARIANT) {
+                               error = CONNMAN_ERROR_INTERFACE ".InvalidArguments";
                                break;
+                       }
+
                        dbus_message_iter_recurse(&entry, &value);
+                       if (dbus_message_iter_get_arg_type(&value) != DBUS_TYPE_STRING) {
+                               error = CONNMAN_ERROR_INTERFACE ".InvalidArguments";
+                               break;
+                       }
+
                        dbus_message_iter_get_basic(&value, &identity);
 
                } else if (g_str_equal(key, "Passphrase")) {
                        dbus_message_iter_next(&entry);
                        if (dbus_message_iter_get_arg_type(&entry)
-                                                       != DBUS_TYPE_VARIANT)
+                                                       != DBUS_TYPE_VARIANT) {
+                               error = CONNMAN_ERROR_INTERFACE ".InvalidArguments";
                                break;
+                       }
+
                        dbus_message_iter_recurse(&entry, &value);
+                       if (dbus_message_iter_get_arg_type(&value) != DBUS_TYPE_STRING) {
+                               error = CONNMAN_ERROR_INTERFACE ".InvalidArguments";
+                               break;
+                       }
+
                        dbus_message_iter_get_basic(&value, &passphrase);
 
                } else if (g_str_equal(key, "WPS")) {
-                       wps = true;
 
                        dbus_message_iter_next(&entry);
                        if (dbus_message_iter_get_arg_type(&entry)
-                                                       != DBUS_TYPE_VARIANT)
+                                                       != DBUS_TYPE_VARIANT) {
+                               error = CONNMAN_ERROR_INTERFACE ".InvalidArguments";
                                break;
+                       }
+
                        dbus_message_iter_recurse(&entry, &value);
+                       if (dbus_message_iter_get_arg_type(&value) != DBUS_TYPE_STRING) {
+                               error = CONNMAN_ERROR_INTERFACE ".InvalidArguments";
+                               break;
+                       }
+
+                       wps = true;
                        dbus_message_iter_get_basic(&value, &wpspin);
                        break;
                } else if (g_str_equal(key, "Name")) {
                        dbus_message_iter_next(&entry);
                        if (dbus_message_iter_get_arg_type(&entry)
-                                                       != DBUS_TYPE_VARIANT)
+                                                       != DBUS_TYPE_VARIANT) {
+                               error = CONNMAN_ERROR_INTERFACE ".InvalidArguments";
                                break;
+                       }
+
                        dbus_message_iter_recurse(&entry, &value);
+                       if (dbus_message_iter_get_arg_type(&value) != DBUS_TYPE_STRING) {
+                               error = CONNMAN_ERROR_INTERFACE ".InvalidArguments";
+                               break;
+                       }
+
                        dbus_message_iter_get_basic(&value, &name);
                        name_len = strlen(name);
                } else if (g_str_equal(key, "SSID")) {
-#if defined TIZEN_EXT
-                       DBusMessageIter array;
-#endif
+                       DBusMessageIter array_iter;
+
                        dbus_message_iter_next(&entry);
                        if (dbus_message_iter_get_arg_type(&entry)
-                                                       != DBUS_TYPE_VARIANT)
+                                                       != DBUS_TYPE_VARIANT) {
+                               error = CONNMAN_ERROR_INTERFACE ".InvalidArguments";
                                break;
-#if defined TIZEN_EXT
-                       dbus_message_iter_recurse(&entry, &array);
-                       if (dbus_message_iter_get_arg_type(&array)
-                                                       != DBUS_TYPE_ARRAY)
-                               break;
-                       dbus_message_iter_recurse(&array, &value);
-                       if (dbus_message_iter_get_arg_type(&value)
-                                                       != DBUS_TYPE_BYTE)
-                               break;
-#else
-
+                       }
                        dbus_message_iter_recurse(&entry, &value);
                        if (dbus_message_iter_get_arg_type(&value)
-                                                       != DBUS_TYPE_VARIANT)
+                                                       != DBUS_TYPE_ARRAY) {
+                               error = CONNMAN_ERROR_INTERFACE ".InvalidArguments";
                                break;
-                       if (dbus_message_iter_get_element_type(&value)
-                                                       != DBUS_TYPE_VARIANT)
+                       }
+                       dbus_message_iter_recurse(&value, &array_iter);
+                       if (dbus_message_iter_get_arg_type(&array_iter)
+                                                       != DBUS_TYPE_BYTE) {
+                               error = CONNMAN_ERROR_INTERFACE ".InvalidArguments";
                                break;
-#endif
-                       dbus_message_iter_get_fixed_array(&value, &name,
+                       }
+                       dbus_message_iter_get_fixed_array(&array_iter, &name,
                                                        &name_len);
                }
                dbus_message_iter_next(&dict);
@@ -417,17 +445,33 @@ static void request_input_login_reply(DBusMessage *reply, void *user_data)
                if (g_str_equal(key, "Username")) {
                        dbus_message_iter_next(&entry);
                        if (dbus_message_iter_get_arg_type(&entry)
-                                                       != DBUS_TYPE_VARIANT)
+                                                       != DBUS_TYPE_VARIANT) {
+                               error = CONNMAN_ERROR_INTERFACE ".InvalidArguments";
                                break;
+                       }
+
                        dbus_message_iter_recurse(&entry, &value);
+                       if (dbus_message_iter_get_arg_type(&value) != DBUS_TYPE_STRING) {
+                               error = CONNMAN_ERROR_INTERFACE ".InvalidArguments";
+                               break;
+                       }
+
                        dbus_message_iter_get_basic(&value, &username);
 
                } else if (g_str_equal(key, "Password")) {
                        dbus_message_iter_next(&entry);
                        if (dbus_message_iter_get_arg_type(&entry) !=
-                                                       DBUS_TYPE_VARIANT)
+                                                       DBUS_TYPE_VARIANT) {
+                               error = CONNMAN_ERROR_INTERFACE ".InvalidArguments";
                                break;
+                       }
+
                        dbus_message_iter_recurse(&entry, &value);
+                       if (dbus_message_iter_get_arg_type(&value) != DBUS_TYPE_STRING) {
+                               error = CONNMAN_ERROR_INTERFACE ".InvalidArguments";
+                               break;
+                       }
+
                        dbus_message_iter_get_basic(&value, &password);
                }
 
@@ -595,73 +639,6 @@ int __connman_agent_request_login_input(struct connman_service *service,
        return -EINPROGRESS;
 }
 
-#if defined TIZEN_CONNMAN_USE_BLACKLIST
-dbus_bool_t __connman_agent_request_blacklist_check(
-               const char *name, const char *security, const char *eap)
-{
-       DBusMessage *message;
-       DBusMessage *reply;
-       DBusMessageIter iter;
-       DBusError error;
-       dbus_bool_t allowed = TRUE;
-       const char *no_eap = "";
-
-       if (agent_path == NULL) {
-               DBG("agent is not registered");
-               return FALSE;
-       }
-
-       if (name == NULL || security == NULL)
-               return FALSE;
-
-       message = dbus_message_new_method_call(agent_sender, agent_path,
-                                       "net.netconfig.wifi",
-                                       "CheckBlackList");
-       if (message == NULL) {
-               DBG("dbus_message_new_method_call() failed");
-               return TRUE;
-       }
-
-       dbus_message_iter_init_append(message, &iter);
-       dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &name);
-       dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &security);
-
-       if (eap)
-               dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &eap);
-       else
-               dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &no_eap);
-
-       dbus_error_init(&error);
-
-       reply = dbus_connection_send_with_reply_and_block(connection, message, 2000, &error);
-       if (reply == NULL) {
-               if (dbus_error_is_set(&error) == TRUE) {
-                       DBG("dbus_connection_send_with_reply_and_block() failed. "
-                                       "dbus error [%s: %s]", error.name, error.message);
-
-                       dbus_error_free(&error);
-               } else
-                       DBG("failed to get properties");
-
-               dbus_message_unref(message);
-
-               return TRUE;
-       }
-
-       if (dbus_message_get_type(reply) == DBUS_MESSAGE_TYPE_ERROR) {
-               DBG("failed to request blacklist check");
-               return TRUE;
-       }
-
-       dbus_message_iter_init(reply, &iter);
-       dbus_message_iter_get_basic(&iter, &allowed);
-
-       dbus_message_unref(message);
-
-       return allowed;
-}
-#endif
-
 struct request_browser_reply_data {
        struct connman_service *service;
        browser_authentication_cb_t callback;
@@ -790,8 +767,10 @@ static void request_peer_authorization_reply(DBusMessage *reply,
                DBusMessageIter entry, value;
 
                dbus_message_iter_recurse(&dict, &entry);
-               if (dbus_message_iter_get_arg_type(&entry) != DBUS_TYPE_STRING)
+               if (dbus_message_iter_get_arg_type(&entry) != DBUS_TYPE_STRING) {
+                       error = CONNMAN_ERROR_INTERFACE ".InvalidArguments";
                        break;
+               }
 
                dbus_message_iter_get_basic(&entry, &key);
 
@@ -800,9 +779,17 @@ static void request_peer_authorization_reply(DBusMessage *reply,
 
                        dbus_message_iter_next(&entry);
                        if (dbus_message_iter_get_arg_type(&entry)
-                                                       != DBUS_TYPE_VARIANT)
+                                                       != DBUS_TYPE_VARIANT) {
+                               error = CONNMAN_ERROR_INTERFACE ".InvalidArguments";
                                break;
+                       }
+
                        dbus_message_iter_recurse(&entry, &value);
+                       if (dbus_message_iter_get_arg_type(&value) != DBUS_TYPE_STRING) {
+                               error = CONNMAN_ERROR_INTERFACE ".InvalidArguments";
+                               break;
+                       }
+
                        dbus_message_iter_get_basic(&value, &wpspin);
                        break;
                }