dbus: Use stack for temporary object path
This is small enough buffer to not require more complex dynamic allocation for temporary use.
This commit is contained in:
parent
8f770587d9
commit
3e87bd5478
3 changed files with 12 additions and 64 deletions
|
@ -1060,10 +1060,8 @@ int wpas_dbus_register_network(struct wpa_supplicant *wpa_s,
|
||||||
{
|
{
|
||||||
struct wpas_dbus_priv *ctrl_iface;
|
struct wpas_dbus_priv *ctrl_iface;
|
||||||
struct wpa_dbus_object_desc *obj_desc;
|
struct wpa_dbus_object_desc *obj_desc;
|
||||||
|
|
||||||
struct network_handler_args *arg = NULL;
|
struct network_handler_args *arg = NULL;
|
||||||
|
char net_obj_path[WPAS_DBUS_OBJECT_PATH_MAX];
|
||||||
char *net_obj_path;
|
|
||||||
|
|
||||||
/* Do nothing if the control interface is not turned on */
|
/* Do nothing if the control interface is not turned on */
|
||||||
if (wpa_s == NULL || wpa_s->global == NULL)
|
if (wpa_s == NULL || wpa_s->global == NULL)
|
||||||
|
@ -1072,9 +1070,6 @@ int wpas_dbus_register_network(struct wpa_supplicant *wpa_s,
|
||||||
if (ctrl_iface == NULL)
|
if (ctrl_iface == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
net_obj_path = os_zalloc(WPAS_DBUS_OBJECT_PATH_MAX);
|
|
||||||
if (net_obj_path == NULL)
|
|
||||||
return -1;
|
|
||||||
os_snprintf(net_obj_path, WPAS_DBUS_OBJECT_PATH_MAX,
|
os_snprintf(net_obj_path, WPAS_DBUS_OBJECT_PATH_MAX,
|
||||||
"%s/" WPAS_DBUS_NEW_NETWORKS_PART "/%u",
|
"%s/" WPAS_DBUS_NEW_NETWORKS_PART "/%u",
|
||||||
wpa_s->dbus_new_path, ssid->id);
|
wpa_s->dbus_new_path, ssid->id);
|
||||||
|
@ -1109,11 +1104,9 @@ int wpas_dbus_register_network(struct wpa_supplicant *wpa_s,
|
||||||
|
|
||||||
wpas_dbus_signal_network_added(wpa_s, ssid->id);
|
wpas_dbus_signal_network_added(wpa_s, ssid->id);
|
||||||
|
|
||||||
os_free(net_obj_path);
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
err:
|
err:
|
||||||
os_free(net_obj_path);
|
|
||||||
os_free(obj_desc);
|
os_free(obj_desc);
|
||||||
os_free(arg);
|
os_free(arg);
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -1131,7 +1124,7 @@ err:
|
||||||
int wpas_dbus_unregister_network(struct wpa_supplicant *wpa_s, int nid)
|
int wpas_dbus_unregister_network(struct wpa_supplicant *wpa_s, int nid)
|
||||||
{
|
{
|
||||||
struct wpas_dbus_priv *ctrl_iface;
|
struct wpas_dbus_priv *ctrl_iface;
|
||||||
char *net_obj_path;
|
char net_obj_path[WPAS_DBUS_OBJECT_PATH_MAX];
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
/* Do nothing if the control interface is not turned on */
|
/* Do nothing if the control interface is not turned on */
|
||||||
|
@ -1141,9 +1134,6 @@ int wpas_dbus_unregister_network(struct wpa_supplicant *wpa_s, int nid)
|
||||||
if (ctrl_iface == NULL)
|
if (ctrl_iface == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
net_obj_path = os_zalloc(WPAS_DBUS_OBJECT_PATH_MAX);
|
|
||||||
if (net_obj_path == NULL)
|
|
||||||
return -1;
|
|
||||||
os_snprintf(net_obj_path, WPAS_DBUS_OBJECT_PATH_MAX,
|
os_snprintf(net_obj_path, WPAS_DBUS_OBJECT_PATH_MAX,
|
||||||
"%s/" WPAS_DBUS_NEW_NETWORKS_PART "/%u",
|
"%s/" WPAS_DBUS_NEW_NETWORKS_PART "/%u",
|
||||||
wpa_s->dbus_new_path, nid);
|
wpa_s->dbus_new_path, nid);
|
||||||
|
@ -1155,7 +1145,6 @@ int wpas_dbus_unregister_network(struct wpa_supplicant *wpa_s, int nid)
|
||||||
if (!ret)
|
if (!ret)
|
||||||
wpas_dbus_signal_network_removed(wpa_s, nid);
|
wpas_dbus_signal_network_removed(wpa_s, nid);
|
||||||
|
|
||||||
os_free(net_obj_path);
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1239,7 +1228,7 @@ int wpas_dbus_unregister_bss(struct wpa_supplicant *wpa_s,
|
||||||
u8 bssid[ETH_ALEN], unsigned int id)
|
u8 bssid[ETH_ALEN], unsigned int id)
|
||||||
{
|
{
|
||||||
struct wpas_dbus_priv *ctrl_iface;
|
struct wpas_dbus_priv *ctrl_iface;
|
||||||
char *bss_obj_path;
|
char bss_obj_path[WPAS_DBUS_OBJECT_PATH_MAX];
|
||||||
|
|
||||||
/* Do nothing if the control interface is not turned on */
|
/* Do nothing if the control interface is not turned on */
|
||||||
if (wpa_s == NULL || wpa_s->global == NULL)
|
if (wpa_s == NULL || wpa_s->global == NULL)
|
||||||
|
@ -1248,10 +1237,6 @@ int wpas_dbus_unregister_bss(struct wpa_supplicant *wpa_s,
|
||||||
if (ctrl_iface == NULL)
|
if (ctrl_iface == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
bss_obj_path = os_zalloc(WPAS_DBUS_OBJECT_PATH_MAX);
|
|
||||||
if (bss_obj_path == NULL)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
os_snprintf(bss_obj_path, WPAS_DBUS_OBJECT_PATH_MAX,
|
os_snprintf(bss_obj_path, WPAS_DBUS_OBJECT_PATH_MAX,
|
||||||
"%s/" WPAS_DBUS_NEW_BSSIDS_PART "/%u",
|
"%s/" WPAS_DBUS_NEW_BSSIDS_PART "/%u",
|
||||||
wpa_s->dbus_new_path, id);
|
wpa_s->dbus_new_path, id);
|
||||||
|
@ -1259,16 +1244,13 @@ int wpas_dbus_unregister_bss(struct wpa_supplicant *wpa_s,
|
||||||
wpa_printf(MSG_DEBUG, "dbus: Unregister BSS object '%s'",
|
wpa_printf(MSG_DEBUG, "dbus: Unregister BSS object '%s'",
|
||||||
bss_obj_path);
|
bss_obj_path);
|
||||||
if (wpa_dbus_unregister_object_per_iface(ctrl_iface, bss_obj_path)) {
|
if (wpa_dbus_unregister_object_per_iface(ctrl_iface, bss_obj_path)) {
|
||||||
wpa_printf(MSG_ERROR,
|
wpa_printf(MSG_ERROR, "dbus: Cannot unregister BSS object %s",
|
||||||
"Cannot unregister BSSID dbus object %s.",
|
|
||||||
bss_obj_path);
|
bss_obj_path);
|
||||||
os_free(bss_obj_path);
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
wpas_dbus_signal_bss_removed(wpa_s, bss_obj_path);
|
wpas_dbus_signal_bss_removed(wpa_s, bss_obj_path);
|
||||||
|
|
||||||
os_free(bss_obj_path);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1287,8 +1269,7 @@ int wpas_dbus_register_bss(struct wpa_supplicant *wpa_s,
|
||||||
{
|
{
|
||||||
struct wpas_dbus_priv *ctrl_iface;
|
struct wpas_dbus_priv *ctrl_iface;
|
||||||
struct wpa_dbus_object_desc *obj_desc;
|
struct wpa_dbus_object_desc *obj_desc;
|
||||||
char *bss_obj_path;
|
char bss_obj_path[WPAS_DBUS_OBJECT_PATH_MAX];
|
||||||
|
|
||||||
struct bss_handler_args *arg = NULL;
|
struct bss_handler_args *arg = NULL;
|
||||||
|
|
||||||
/* Do nothing if the control interface is not turned on */
|
/* Do nothing if the control interface is not turned on */
|
||||||
|
@ -1298,10 +1279,6 @@ int wpas_dbus_register_bss(struct wpa_supplicant *wpa_s,
|
||||||
if (ctrl_iface == NULL)
|
if (ctrl_iface == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
bss_obj_path = os_zalloc(WPAS_DBUS_OBJECT_PATH_MAX);
|
|
||||||
if (bss_obj_path == NULL)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
os_snprintf(bss_obj_path, WPAS_DBUS_OBJECT_PATH_MAX,
|
os_snprintf(bss_obj_path, WPAS_DBUS_OBJECT_PATH_MAX,
|
||||||
"%s/" WPAS_DBUS_NEW_BSSIDS_PART "/%u",
|
"%s/" WPAS_DBUS_NEW_BSSIDS_PART "/%u",
|
||||||
wpa_s->dbus_new_path, id);
|
wpa_s->dbus_new_path, id);
|
||||||
|
@ -1338,11 +1315,9 @@ int wpas_dbus_register_bss(struct wpa_supplicant *wpa_s,
|
||||||
|
|
||||||
wpas_dbus_signal_bss_added(wpa_s, bss_obj_path);
|
wpas_dbus_signal_bss_added(wpa_s, bss_obj_path);
|
||||||
|
|
||||||
os_free(bss_obj_path);
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
err:
|
err:
|
||||||
os_free(bss_obj_path);
|
|
||||||
os_free(obj_desc);
|
os_free(obj_desc);
|
||||||
os_free(arg);
|
os_free(arg);
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
@ -1300,14 +1300,7 @@ DBusMessage * wpas_dbus_handler_add_network(DBusMessage *message,
|
||||||
DBusMessage *reply = NULL;
|
DBusMessage *reply = NULL;
|
||||||
DBusMessageIter iter;
|
DBusMessageIter iter;
|
||||||
struct wpa_ssid *ssid = NULL;
|
struct wpa_ssid *ssid = NULL;
|
||||||
char *path = NULL;
|
char path_buf[WPAS_DBUS_OBJECT_PATH_MAX], *path = path_buf;
|
||||||
|
|
||||||
path = os_zalloc(WPAS_DBUS_OBJECT_PATH_MAX);
|
|
||||||
if (path == NULL) {
|
|
||||||
reply = dbus_message_new_error(message, DBUS_ERROR_NO_MEMORY,
|
|
||||||
NULL);
|
|
||||||
goto err;
|
|
||||||
}
|
|
||||||
|
|
||||||
dbus_message_iter_init(message, &iter);
|
dbus_message_iter_init(message, &iter);
|
||||||
|
|
||||||
|
@ -1352,7 +1345,6 @@ DBusMessage * wpas_dbus_handler_add_network(DBusMessage *message,
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
os_free(path);
|
|
||||||
return reply;
|
return reply;
|
||||||
|
|
||||||
err:
|
err:
|
||||||
|
@ -1360,7 +1352,6 @@ err:
|
||||||
wpas_notify_network_removed(wpa_s, ssid);
|
wpas_notify_network_removed(wpa_s, ssid);
|
||||||
wpa_config_remove_network(wpa_s->conf, ssid->id);
|
wpa_config_remove_network(wpa_s->conf, ssid->id);
|
||||||
}
|
}
|
||||||
os_free(path);
|
|
||||||
return reply;
|
return reply;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2084,12 +2075,8 @@ DBusMessage * wpas_dbus_getter_driver(DBusMessage *message,
|
||||||
DBusMessage * wpas_dbus_getter_current_bss(DBusMessage *message,
|
DBusMessage * wpas_dbus_getter_current_bss(DBusMessage *message,
|
||||||
struct wpa_supplicant *wpa_s)
|
struct wpa_supplicant *wpa_s)
|
||||||
{
|
{
|
||||||
DBusMessage *reply = NULL;
|
DBusMessage *reply;
|
||||||
char *bss_obj_path = os_zalloc(WPAS_DBUS_OBJECT_PATH_MAX);
|
char path_buf[WPAS_DBUS_OBJECT_PATH_MAX], *bss_obj_path = path_buf;
|
||||||
|
|
||||||
if (bss_obj_path == NULL)
|
|
||||||
return dbus_message_new_error(message, DBUS_ERROR_NO_MEMORY,
|
|
||||||
NULL);
|
|
||||||
|
|
||||||
if (wpa_s->current_bss)
|
if (wpa_s->current_bss)
|
||||||
os_snprintf(bss_obj_path, WPAS_DBUS_OBJECT_PATH_MAX,
|
os_snprintf(bss_obj_path, WPAS_DBUS_OBJECT_PATH_MAX,
|
||||||
|
@ -2102,7 +2089,6 @@ DBusMessage * wpas_dbus_getter_current_bss(DBusMessage *message,
|
||||||
DBUS_TYPE_OBJECT_PATH,
|
DBUS_TYPE_OBJECT_PATH,
|
||||||
&bss_obj_path);
|
&bss_obj_path);
|
||||||
|
|
||||||
os_free(bss_obj_path);
|
|
||||||
return reply;
|
return reply;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2119,12 +2105,8 @@ DBusMessage * wpas_dbus_getter_current_bss(DBusMessage *message,
|
||||||
DBusMessage * wpas_dbus_getter_current_network(DBusMessage *message,
|
DBusMessage * wpas_dbus_getter_current_network(DBusMessage *message,
|
||||||
struct wpa_supplicant *wpa_s)
|
struct wpa_supplicant *wpa_s)
|
||||||
{
|
{
|
||||||
DBusMessage *reply = NULL;
|
DBusMessage *reply;
|
||||||
char *net_obj_path = os_zalloc(WPAS_DBUS_OBJECT_PATH_MAX);
|
char path_buf[WPAS_DBUS_OBJECT_PATH_MAX], *net_obj_path = path_buf;
|
||||||
|
|
||||||
if (net_obj_path == NULL)
|
|
||||||
return dbus_message_new_error(message, DBUS_ERROR_NO_MEMORY,
|
|
||||||
NULL);
|
|
||||||
|
|
||||||
if (wpa_s->current_ssid)
|
if (wpa_s->current_ssid)
|
||||||
os_snprintf(net_obj_path, WPAS_DBUS_OBJECT_PATH_MAX,
|
os_snprintf(net_obj_path, WPAS_DBUS_OBJECT_PATH_MAX,
|
||||||
|
@ -2137,7 +2119,6 @@ DBusMessage * wpas_dbus_getter_current_network(DBusMessage *message,
|
||||||
DBUS_TYPE_OBJECT_PATH,
|
DBUS_TYPE_OBJECT_PATH,
|
||||||
&net_obj_path);
|
&net_obj_path);
|
||||||
|
|
||||||
os_free(net_obj_path);
|
|
||||||
return reply;
|
return reply;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2211,7 +2192,7 @@ DBusMessage * wpas_dbus_getter_bsss(DBusMessage *message,
|
||||||
paths, wpa_s->num_bss);
|
paths, wpa_s->num_bss);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
while(i)
|
while (i)
|
||||||
os_free(paths[--i]);
|
os_free(paths[--i]);
|
||||||
os_free(paths);
|
os_free(paths);
|
||||||
return reply;
|
return reply;
|
||||||
|
|
|
@ -787,14 +787,7 @@ DBusMessage * wpas_dbus_iface_add_network(DBusMessage *message,
|
||||||
{
|
{
|
||||||
DBusMessage *reply = NULL;
|
DBusMessage *reply = NULL;
|
||||||
struct wpa_ssid *ssid;
|
struct wpa_ssid *ssid;
|
||||||
char *path = NULL;
|
char path_buf[WPAS_DBUS_OBJECT_PATH_MAX], *path = path_buf;
|
||||||
|
|
||||||
path = os_zalloc(WPAS_DBUS_OBJECT_PATH_MAX);
|
|
||||||
if (path == NULL) {
|
|
||||||
wpa_printf(MSG_ERROR, "dbus: Not enough memory to send scan "
|
|
||||||
"results signal");
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
ssid = wpa_config_add_network(wpa_s->conf);
|
ssid = wpa_config_add_network(wpa_s->conf);
|
||||||
if (ssid == NULL) {
|
if (ssid == NULL) {
|
||||||
|
@ -818,7 +811,6 @@ DBusMessage * wpas_dbus_iface_add_network(DBusMessage *message,
|
||||||
&path, DBUS_TYPE_INVALID);
|
&path, DBUS_TYPE_INVALID);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
os_free(path);
|
|
||||||
return reply;
|
return reply;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue