mesh: Remove GTKdata and IGTKdata from Mesh Peering Confirm/Close
[mech_eap.git] / wpa_supplicant / dbus / dbus_old_handlers.c
index c0136e9..e8f62ef 100644 (file)
@@ -37,9 +37,9 @@ DBusMessage * wpas_dbus_new_invalid_opts_error(DBusMessage *message,
 {
        DBusMessage *reply;
 
-       reply = dbus_message_new_error(message, WPAS_ERROR_INVALID_OPTS,
-                                      "Did not receive correct message "
-                                      "arguments.");
+       reply = dbus_message_new_error(
+               message, WPAS_ERROR_INVALID_OPTS,
+               "Did not receive correct message arguments.");
        if (arg != NULL)
                dbus_message_append_args(reply, DBUS_TYPE_STRING, &arg,
                                         DBUS_TYPE_INVALID);
@@ -112,28 +112,28 @@ DBusMessage * wpas_dbus_global_add_interface(DBusMessage *message,
                        if (!wpa_dbus_dict_get_entry(&iter_dict, &entry))
                                goto error;
                        if (!strcmp(entry.key, "driver") &&
-                           (entry.type == DBUS_TYPE_STRING)) {
+                           entry.type == DBUS_TYPE_STRING) {
                                os_free(driver);
                                driver = os_strdup(entry.str_value);
                                wpa_dbus_dict_entry_clear(&entry);
                                if (driver == NULL)
                                        goto error;
                        } else if (!strcmp(entry.key, "driver-params") &&
-                                  (entry.type == DBUS_TYPE_STRING)) {
+                                  entry.type == DBUS_TYPE_STRING) {
                                os_free(driver_param);
                                driver_param = os_strdup(entry.str_value);
                                wpa_dbus_dict_entry_clear(&entry);
                                if (driver_param == NULL)
                                        goto error;
                        } else if (!strcmp(entry.key, "config-file") &&
-                                  (entry.type == DBUS_TYPE_STRING)) {
+                                  entry.type == DBUS_TYPE_STRING) {
                                os_free(confname);
                                confname = os_strdup(entry.str_value);
                                wpa_dbus_dict_entry_clear(&entry);
                                if (confname == NULL)
                                        goto error;
                        } else if (!strcmp(entry.key, "bridge-ifname") &&
-                                  (entry.type == DBUS_TYPE_STRING)) {
+                                  entry.type == DBUS_TYPE_STRING) {
                                os_free(bridge_ifname);
                                bridge_ifname = os_strdup(entry.str_value);
                                wpa_dbus_dict_entry_clear(&entry);
@@ -151,13 +151,13 @@ DBusMessage * wpas_dbus_global_add_interface(DBusMessage *message,
         * an error if we already control it.
         */
        if (wpa_supplicant_get_iface(global, ifname) != NULL) {
-               reply = dbus_message_new_error(message,
-                                              WPAS_ERROR_EXISTS_ERROR,
-                                              "wpa_supplicant already "
-                                              "controls this interface.");
+               reply = dbus_message_new_error(
+                       message, WPAS_ERROR_EXISTS_ERROR,
+                       "wpa_supplicant already controls this interface.");
        } else {
                struct wpa_supplicant *wpa_s;
                struct wpa_interface iface;
+
                os_memset(&iface, 0, sizeof(iface));
                iface.ifname = ifname;
                iface.driver = driver;
@@ -165,17 +165,17 @@ DBusMessage * wpas_dbus_global_add_interface(DBusMessage *message,
                iface.confname = confname;
                iface.bridge_ifname = bridge_ifname;
                /* Otherwise, have wpa_supplicant attach to it. */
-               if ((wpa_s = wpa_supplicant_add_iface(global, &iface))) {
+               wpa_s = wpa_supplicant_add_iface(global, &iface, NULL);
+               if (wpa_s && wpa_s->dbus_path) {
                        const char *path = wpa_s->dbus_path;
+
                        reply = dbus_message_new_method_return(message);
                        dbus_message_append_args(reply, DBUS_TYPE_OBJECT_PATH,
-                                                &path, DBUS_TYPE_INVALID);
+                                                &path, DBUS_TYPE_INVALID);
                } else {
-                       reply = dbus_message_new_error(message,
-                                                      WPAS_ERROR_ADD_ERROR,
-                                                      "wpa_supplicant "
-                                                      "couldn't grab this "
-                                                      "interface.");
+                       reply = dbus_message_new_error(
+                               message, WPAS_ERROR_ADD_ERROR,
+                               "wpa_supplicant couldn't grab this interface.");
                }
        }
 
@@ -226,10 +226,9 @@ DBusMessage * wpas_dbus_global_remove_interface(DBusMessage *message,
        if (!wpa_supplicant_remove_iface(global, wpa_s, 0)) {
                reply = wpas_dbus_new_success_reply(message);
        } else {
-               reply = dbus_message_new_error(message,
-                                              WPAS_ERROR_REMOVE_ERROR,
-                                              "wpa_supplicant couldn't "
-                                              "remove this interface.");
+               reply = dbus_message_new_error(
+                       message, WPAS_ERROR_REMOVE_ERROR,
+                       "wpa_supplicant couldn't remove this interface.");
        }
 
 out:
@@ -256,14 +255,14 @@ DBusMessage * wpas_dbus_global_get_interface(DBusMessage *message,
        struct wpa_supplicant *wpa_s;
 
        if (!dbus_message_get_args(message, NULL,
-                                  DBUS_TYPE_STRING, &ifname,
-                                  DBUS_TYPE_INVALID)) {
+                                  DBUS_TYPE_STRING, &ifname,
+                                  DBUS_TYPE_INVALID)) {
                reply = wpas_dbus_new_invalid_opts_error(message, NULL);
                goto out;
        }
 
        wpa_s = wpa_supplicant_get_iface(global, ifname);
-       if (wpa_s == NULL) {
+       if (wpa_s == NULL || !wpa_s->dbus_path) {
                reply = wpas_dbus_new_invalid_iface_error(message);
                goto out;
        }
@@ -271,8 +270,8 @@ DBusMessage * wpas_dbus_global_get_interface(DBusMessage *message,
        path = wpa_s->dbus_path;
        reply = dbus_message_new_method_return(message);
        dbus_message_append_args(reply,
-                                DBUS_TYPE_OBJECT_PATH, &path,
-                                DBUS_TYPE_INVALID);
+                                DBUS_TYPE_OBJECT_PATH, &path,
+                                DBUS_TYPE_INVALID);
 
 out:
        return reply;
@@ -298,10 +297,10 @@ DBusMessage * wpas_dbus_global_set_debugparams(DBusMessage *message,
        dbus_bool_t debug_show_keys;
 
        if (!dbus_message_get_args(message, NULL,
-                                  DBUS_TYPE_INT32, &debug_level,
-                                  DBUS_TYPE_BOOLEAN, &debug_timestamp,
-                                  DBUS_TYPE_BOOLEAN, &debug_show_keys,
-                                  DBUS_TYPE_INVALID)) {
+                                  DBUS_TYPE_INT32, &debug_level,
+                                  DBUS_TYPE_BOOLEAN, &debug_timestamp,
+                                  DBUS_TYPE_BOOLEAN, &debug_show_keys,
+                                  DBUS_TYPE_INVALID)) {
                return wpas_dbus_new_invalid_opts_error(message, NULL);
        }
 
@@ -355,6 +354,11 @@ DBusMessage * wpas_dbus_iface_scan_results(DBusMessage *message,
        DBusMessageIter sub_iter;
        struct wpa_bss *bss;
 
+       if (!wpa_s->dbus_path)
+               return dbus_message_new_error(message,
+                                             WPAS_ERROR_INTERNAL_ERROR,
+                                             "no D-Bus interface available");
+
        /* Create and initialize the return message */
        reply = dbus_message_new_method_return(message);
        dbus_message_iter_init_append(reply, &iter);
@@ -496,7 +500,7 @@ DBusMessage * wpas_dbus_iface_capabilities(DBusMessage *message,
        /* EAP methods */
        eap_methods = eap_get_names_as_string_array(&num_items);
        if (eap_methods) {
-               dbus_bool_t success = FALSE;
+               dbus_bool_t success;
                size_t i = 0;
 
                success = wpa_dbus_dict_append_string_array(
@@ -518,6 +522,7 @@ DBusMessage * wpas_dbus_iface_capabilities(DBusMessage *message,
        if (res < 0) {
                if (!strict) {
                        const char *args[] = {"CCMP", "TKIP", "NONE"};
+
                        if (!wpa_dbus_dict_append_string_array(
                                    &iter_dict, "pairwise", args,
                                    ARRAY_SIZE(args)))
@@ -550,6 +555,7 @@ DBusMessage * wpas_dbus_iface_capabilities(DBusMessage *message,
                        const char *args[] = {
                                "CCMP", "TKIP", "WEP104", "WEP40"
                        };
+
                        if (!wpa_dbus_dict_append_string_array(
                                    &iter_dict, "group", args,
                                    ARRAY_SIZE(args)))
@@ -624,6 +630,7 @@ DBusMessage * wpas_dbus_iface_capabilities(DBusMessage *message,
        if (res < 0) {
                if (!strict) {
                        const char *args[] = { "RSN", "WPA" };
+
                        if (!wpa_dbus_dict_append_string_array(
                                    &iter_dict, "proto", args,
                                    ARRAY_SIZE(args)))
@@ -653,6 +660,7 @@ DBusMessage * wpas_dbus_iface_capabilities(DBusMessage *message,
        if (res < 0) {
                if (!strict) {
                        const char *args[] = { "OPEN", "SHARED", "LEAP" };
+
                        if (!wpa_dbus_dict_append_string_array(
                                    &iter_dict, "auth_alg", args,
                                    ARRAY_SIZE(args)))
@@ -687,9 +695,9 @@ DBusMessage * wpas_dbus_iface_capabilities(DBusMessage *message,
 error:
        if (reply)
                dbus_message_unref(reply);
-       return dbus_message_new_error(message, WPAS_ERROR_INTERNAL_ERROR,
-                                     "an internal error occurred returning "
-                                     "interface capabilities.");
+       return dbus_message_new_error(
+               message, WPAS_ERROR_INTERNAL_ERROR,
+               "an internal error occurred returning interface capabilities.");
 }
 
 
@@ -705,15 +713,15 @@ DBusMessage * wpas_dbus_iface_add_network(DBusMessage *message,
                                          struct wpa_supplicant *wpa_s)
 {
        DBusMessage *reply = NULL;
-       struct wpa_ssid *ssid;
+       struct wpa_ssid *ssid = NULL;
        char path_buf[WPAS_DBUS_OBJECT_PATH_MAX], *path = path_buf;
 
-       ssid = wpa_config_add_network(wpa_s->conf);
+       if (wpa_s->dbus_path)
+               ssid = wpa_config_add_network(wpa_s->conf);
        if (ssid == NULL) {
-               reply = dbus_message_new_error(message,
-                                              WPAS_ERROR_ADD_NETWORK_ERROR,
-                                              "wpa_supplicant could not add "
-                                              "a network on this interface.");
+               reply = dbus_message_new_error(
+                       message, WPAS_ERROR_ADD_NETWORK_ERROR,
+                       "wpa_supplicant could not add a network on this interface.");
                goto out;
        }
        wpas_notify_network_added(wpa_s, ssid);
@@ -753,8 +761,8 @@ DBusMessage * wpas_dbus_iface_remove_network(DBusMessage *message,
        struct wpa_ssid *ssid;
 
        if (!dbus_message_get_args(message, NULL,
-                                  DBUS_TYPE_OBJECT_PATH, &op,
-                                  DBUS_TYPE_INVALID)) {
+                                  DBUS_TYPE_OBJECT_PATH, &op,
+                                  DBUS_TYPE_INVALID)) {
                reply = wpas_dbus_new_invalid_opts_error(message, NULL);
                goto out;
        }
@@ -767,7 +775,7 @@ DBusMessage * wpas_dbus_iface_remove_network(DBusMessage *message,
        }
 
        /* Ensure the network is actually a child of this interface */
-       if (os_strcmp(iface, wpa_s->dbus_path) != 0) {
+       if (!wpa_s->dbus_path || os_strcmp(iface, wpa_s->dbus_path) != 0) {
                reply = wpas_dbus_new_invalid_network_error(message);
                goto out;
        }
@@ -786,10 +794,9 @@ DBusMessage * wpas_dbus_iface_remove_network(DBusMessage *message,
                                              WLAN_REASON_DEAUTH_LEAVING);
 
        if (wpa_config_remove_network(wpa_s->conf, id) < 0) {
-               reply = dbus_message_new_error(message,
-                                              WPAS_ERROR_REMOVE_NETWORK_ERROR,
-                                              "error removing the specified "
-                                              "on this interface.");
+               reply = dbus_message_new_error(
+                       message, WPAS_ERROR_REMOVE_NETWORK_ERROR,
+                       "error removing the specified on this interface.");
                goto out;
        }
 
@@ -802,18 +809,19 @@ out:
 }
 
 
-static const char *dont_quote[] = {
+static const char * const dont_quote[] = {
        "key_mgmt", "proto", "pairwise", "auth_alg", "group", "eap",
        "opensc_engine_path", "pkcs11_engine_path", "pkcs11_module_path",
-       "bssid", NULL
+       "bssid", "scan_freq", "freq_list", NULL
 };
 
 
 static dbus_bool_t should_quote_opt(const char *key)
 {
        int i = 0;
+
        while (dont_quote[i] != NULL) {
-               if (strcmp(key, dont_quote[i]) == 0)
+               if (os_strcmp(key, dont_quote[i]) == 0)
                        return FALSE;
                i++;
        }
@@ -876,7 +884,7 @@ DBusMessage * wpas_dbus_iface_set_network(DBusMessage *message,
                        if (should_quote_opt(entry.key)) {
                                size = os_strlen(entry.str_value);
                                /* Zero-length option check */
-                               if (size <= 0)
+                               if (size == 0)
                                        goto error;
                                size += 3;  /* For quotes and terminator */
                                value = os_zalloc(size);
@@ -1018,7 +1026,7 @@ DBusMessage * wpas_dbus_iface_select_network(DBusMessage *message,
                        goto out;
                }
                /* Ensure the object path really points to this interface */
-               if (network == NULL ||
+               if (network == NULL || !wpa_s->dbus_path ||
                    os_strcmp(iface_obj_path, wpa_s->dbus_path) != 0) {
                        reply = wpas_dbus_new_invalid_network_error(message);
                        goto out;
@@ -1129,28 +1137,30 @@ DBusMessage * wpas_dbus_iface_set_smartcard_modules(
                if (!wpa_dbus_dict_get_entry(&iter_dict, &entry))
                        goto error;
                if (!strcmp(entry.key, "opensc_engine_path") &&
-                   (entry.type == DBUS_TYPE_STRING)) {
+                   entry.type == DBUS_TYPE_STRING) {
                        os_free(opensc_engine_path);
                        opensc_engine_path = os_strdup(entry.str_value);
+                       wpa_dbus_dict_entry_clear(&entry);
                        if (opensc_engine_path == NULL)
                                goto error;
                } else if (!strcmp(entry.key, "pkcs11_engine_path") &&
-                          (entry.type == DBUS_TYPE_STRING)) {
+                          entry.type == DBUS_TYPE_STRING) {
                        os_free(pkcs11_engine_path);
                        pkcs11_engine_path = os_strdup(entry.str_value);
+                       wpa_dbus_dict_entry_clear(&entry);
                        if (pkcs11_engine_path == NULL)
                                goto error;
                } else if (!strcmp(entry.key, "pkcs11_module_path") &&
-                                (entry.type == DBUS_TYPE_STRING)) {
+                                entry.type == DBUS_TYPE_STRING) {
                        os_free(pkcs11_module_path);
                        pkcs11_module_path = os_strdup(entry.str_value);
+                       wpa_dbus_dict_entry_clear(&entry);
                        if (pkcs11_module_path == NULL)
                                goto error;
                } else {
                        wpa_dbus_dict_entry_clear(&entry);
                        goto error;
                }
-               wpa_dbus_dict_entry_clear(&entry);
        }
 
        os_free(wpa_s->conf->opensc_engine_path);
@@ -1221,8 +1231,8 @@ DBusMessage * wpas_dbus_iface_get_scanning(DBusMessage *message,
                dbus_message_append_args(reply, DBUS_TYPE_BOOLEAN, &scanning,
                                         DBUS_TYPE_INVALID);
        } else {
-               wpa_printf(MSG_ERROR, "dbus: Not enough memory to return "
-                          "scanning state");
+               wpa_printf(MSG_ERROR,
+                          "dbus: Not enough memory to return scanning state");
        }
 
        return reply;
@@ -1334,8 +1344,8 @@ DBusMessage * wpas_dbus_iface_remove_blobs(DBusMessage *message,
 
        dbus_message_iter_init(message, &iter);
 
-       if ((dbus_message_iter_get_arg_type (&iter) != DBUS_TYPE_ARRAY) ||
-           (dbus_message_iter_get_element_type (&iter) != DBUS_TYPE_STRING))
+       if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY ||
+           dbus_message_iter_get_element_type(&iter) != DBUS_TYPE_STRING)
                return wpas_dbus_new_invalid_opts_error(message, NULL);
 
        dbus_message_iter_recurse(&iter, &array);