summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/ifw/ifw_dbus.c97
-rw-r--r--src/plugins/wireless/plugin.c5
2 files changed, 61 insertions, 41 deletions
diff --git a/src/plugins/ifw/ifw_dbus.c b/src/plugins/ifw/ifw_dbus.c
index caf6753..9a9a841 100644
--- a/src/plugins/ifw/ifw_dbus.c
+++ b/src/plugins/ifw/ifw_dbus.c
@@ -36,28 +36,33 @@ void ifw_dbus_notify_attack(DBusConnection *bus, report_list_cell_t *report) {
IFW_DBUS_INTERFACE,
"Attack");
+ /* DBus wants a char** for strings, and &char[] == char*, so use temporary variables */
+ char *dev = report->info.indev_name;
+ char *prefix = report->info.prefix;
+
dbus_message_append_args(message,
DBUS_TYPE_UINT32,
- report->info.timestamp_sec,
+ &report->info.timestamp_sec,
DBUS_TYPE_STRING,
- report->info.indev_name,
+ &dev,
DBUS_TYPE_STRING,
- report->info.prefix,
+ &prefix,
DBUS_TYPE_UINT32,
- report->info.sensor,
+ &report->info.sensor,
DBUS_TYPE_UINT32,
- report->info.protocol,
+ &report->info.protocol,
DBUS_TYPE_UINT32,
- report->info.s_addr,
+ &report->info.s_addr,
DBUS_TYPE_UINT32,
- report->info.d_port,
+ &report->info.d_port,
DBUS_TYPE_UINT32,
- report->info.icmp_type,
+ &report->info.icmp_type,
DBUS_TYPE_UINT32,
- report->seq,
+ &report->seq,
DBUS_TYPE_UINT32,
- report->processed,
+ &report->processed,
DBUS_TYPE_INVALID);
+
dbus_connection_send(bus, message, NULL);
dbus_connection_flush(bus);
dbus_message_unref(message);
@@ -67,27 +72,31 @@ void ifw_dbus_notify_attack(DBusConnection *bus, report_list_cell_t *report) {
void ifw_dbus_notify_blacklist(DBusConnection *bus, msg_usr_t *attack) {
DBusMessage *message;
+ /* DBus wants a char** for strings, and &char[] == char*, so use temporary variables */
+ char *dev = attack->indev_name;
+ char *prefix = attack->prefix;
+
message = dbus_message_new_signal(IFW_DBUS_PATH,
IFW_DBUS_INTERFACE,
"Blacklist");
dbus_message_append_args(message,
DBUS_TYPE_UINT32,
- attack->timestamp_sec,
+ &attack->timestamp_sec,
DBUS_TYPE_STRING,
- attack->indev_name,
+ &dev,
DBUS_TYPE_STRING,
- attack->prefix,
+ &prefix,
DBUS_TYPE_UINT32,
- attack->sensor,
+ &attack->sensor,
DBUS_TYPE_UINT32,
- attack->protocol,
+ &attack->protocol,
DBUS_TYPE_UINT32,
- attack->s_addr,
+ &attack->s_addr,
DBUS_TYPE_UINT32,
- attack->d_port,
+ &attack->d_port,
DBUS_TYPE_UINT32,
- attack->icmp_type,
+ &attack->icmp_type,
DBUS_TYPE_INVALID);
dbus_connection_send(bus, message, NULL);
dbus_connection_flush(bus);
@@ -103,7 +112,7 @@ void ifw_dbus_notify_whitelist(DBusConnection *bus, u_int32_t addr) {
"Whitelist");
dbus_message_append_args(message,
DBUS_TYPE_UINT32,
- addr,
+ &addr,
DBUS_TYPE_INVALID);
dbus_connection_send(bus, message, NULL);
dbus_connection_flush(bus);
@@ -136,7 +145,7 @@ DBusHandlerResult ifw_dbus_get_mode(DBusConnection *connection, DBusMessage *mes
reply = dbus_message_new_method_return(message);
dbus_message_append_args(reply,
DBUS_TYPE_UINT32,
- ifw->mode,
+ &ifw->mode,
DBUS_TYPE_INVALID);
dbus_connection_send(connection, reply, NULL);
dbus_connection_flush(connection);
@@ -168,7 +177,7 @@ DBusHandlerResult ifw_dbus_set_mode(DBusConnection *connection, DBusMessage *mes
reply = dbus_message_new_method_return(message);
dbus_message_append_args(reply,
DBUS_TYPE_UINT32,
- ifw->mode,
+ &ifw->mode,
DBUS_TYPE_INVALID);
dbus_connection_send(connection, reply, NULL);
dbus_connection_flush(connection);
@@ -198,31 +207,35 @@ DBusHandlerResult ifw_dbus_get_reports(DBusConnection *connection, DBusMessage *
reply = dbus_message_new_method_return(message);
__list_for_each(entry, &ifw->reports) {
report_list_cell_t *cell;
+ /* DBus wants a char** for strings, and &char[] == char*, so use temporary variables */
+ char *dev, *prefix;
cell = list_entry(entry, report_list_cell_t, list);
if (cell->processed && !include_processed) {
continue;
}
+ dev = cell->info.indev_name;
+ prefix = cell->info.prefix;
dbus_message_append_args(reply,
DBUS_TYPE_UINT32,
- cell->info.timestamp_sec,
+ &cell->info.timestamp_sec,
DBUS_TYPE_STRING,
- cell->info.indev_name,
+ &dev,
DBUS_TYPE_STRING,
- cell->info.prefix,
+ &prefix,
DBUS_TYPE_UINT32,
- cell->info.sensor,
+ &cell->info.sensor,
DBUS_TYPE_UINT32,
- cell->info.protocol,
+ &cell->info.protocol,
DBUS_TYPE_UINT32,
- cell->info.s_addr,
+ &cell->info.s_addr,
DBUS_TYPE_UINT32,
- cell->info.d_port,
+ &cell->info.d_port,
DBUS_TYPE_UINT32,
- cell->info.icmp_type,
+ &cell->info.icmp_type,
DBUS_TYPE_UINT32,
- cell->seq,
+ &cell->seq,
DBUS_TYPE_UINT32,
- cell->processed,
+ &cell->processed,
DBUS_TYPE_INVALID);
}
dbus_connection_send(connection, reply, NULL);
@@ -239,24 +252,28 @@ DBusHandlerResult ifw_dbus_get_blacklist(DBusConnection *connection, DBusMessage
reply = dbus_message_new_method_return(message);
__list_for_each(entry, &ifw->blacklist) {
black_list_cell_t *cell;
+ /* DBus wants a char** for strings, and &char[] == char*, so use temporary variables */
+ char *dev, *prefix;
cell = list_entry(entry, black_list_cell_t, list);
+ dev = cell->info.indev_name;
+ prefix = cell->info.prefix;
dbus_message_append_args(reply,
DBUS_TYPE_UINT32,
- cell->info.timestamp_sec,
+ &cell->info.timestamp_sec,
DBUS_TYPE_STRING,
- cell->info.indev_name,
+ &dev,
DBUS_TYPE_STRING,
- cell->info.prefix,
+ &prefix,
DBUS_TYPE_UINT32,
- cell->info.sensor,
+ &cell->info.sensor,
DBUS_TYPE_UINT32,
- cell->info.protocol,
+ &cell->info.protocol,
DBUS_TYPE_UINT32,
- cell->info.s_addr,
+ &cell->info.s_addr,
DBUS_TYPE_UINT32,
- cell->info.d_port,
+ &cell->info.d_port,
DBUS_TYPE_UINT32,
- cell->info.icmp_type,
+ &cell->info.icmp_type,
DBUS_TYPE_INVALID);
}
dbus_connection_send(connection, reply, NULL);
@@ -341,7 +358,7 @@ DBusHandlerResult ifw_dbus_get_whitelist(DBusConnection *connection, DBusMessage
cell = list_entry(entry, white_list_cell_t, list);
dbus_message_append_args(reply,
DBUS_TYPE_UINT32,
- cell->addr,
+ &cell->addr,
DBUS_TYPE_INVALID);
}
dbus_connection_send(connection, reply, NULL);
diff --git a/src/plugins/wireless/plugin.c b/src/plugins/wireless/plugin.c
index 1ddeb95..feb12de 100644
--- a/src/plugins/wireless/plugin.c
+++ b/src/plugins/wireless/plugin.c
@@ -107,6 +107,8 @@ static DBusHandlerResult wpa_supplicant_request(DBusConnection *connection, DBus
char buf[2048];
size_t len;
int ret = -1;
+ /* DBus wants a char** for strings, and &char[] == char*, so use temporary variables */
+ char *tmp_buf;
len = sizeof(buf) - 1;
if (ctrl_conn) {
@@ -127,9 +129,10 @@ static DBusHandlerResult wpa_supplicant_request(DBusConnection *connection, DBus
buf[len] = '\0';
reply = dbus_message_new_method_return(message);
+ tmp_buf = buf;
dbus_message_append_args(reply,
DBUS_TYPE_STRING,
- buf,
+ &tmp_buf,
DBUS_TYPE_INVALID);
dbus_connection_send(connection, reply, NULL);
dbus_connection_flush(connection);