summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/connection.c3
-rw-r--r--src/device.c12
-rw-r--r--src/network.c12
3 files changed, 27 insertions, 0 deletions
diff --git a/src/connection.c b/src/connection.c
index 980b770f..f617ddea 100644
--- a/src/connection.c
+++ b/src/connection.c
@@ -291,6 +291,7 @@ static DBusMessage *set_property(DBusConnection *conn,
{
DBusMessageIter iter, value;
const char *name;
+ int type;
DBG("conn %p", conn);
@@ -305,6 +306,8 @@ static DBusMessage *set_property(DBusConnection *conn,
CONNMAN_SECURITY_PRIVILEGE_MODIFY) < 0)
return __connman_error_permission_denied(msg);
+ type = dbus_message_iter_get_arg_type(&value);
+
return g_dbus_create_reply(msg, DBUS_TYPE_INVALID);
}
diff --git a/src/device.c b/src/device.c
index cc5b7614..6e2575b4 100644
--- a/src/device.c
+++ b/src/device.c
@@ -317,6 +317,7 @@ static DBusMessage *set_property(DBusConnection *conn,
struct connman_device *device = data;
DBusMessageIter iter, value;
const char *name;
+ int type;
DBG("conn %p", conn);
@@ -331,10 +332,15 @@ static DBusMessage *set_property(DBusConnection *conn,
CONNMAN_SECURITY_PRIVILEGE_MODIFY) < 0)
return __connman_error_permission_denied(msg);
+ type = dbus_message_iter_get_arg_type(&value);
+
if (g_str_equal(name, "Powered") == TRUE) {
connman_bool_t powered;
int err;
+ if (type != DBUS_TYPE_BOOLEAN)
+ return __connman_error_invalid_arguments(msg);
+
dbus_message_iter_get_basic(&value, &powered);
if (device->powered == powered)
@@ -348,6 +354,9 @@ static DBusMessage *set_property(DBusConnection *conn,
const char *str;
int err;
+ if (type != DBUS_TYPE_STRING)
+ return __connman_error_invalid_arguments(msg);
+
dbus_message_iter_get_basic(&value, &str);
policy = string2policy(str);
if (policy == CONNMAN_DEVICE_POLICY_UNKNOWN)
@@ -359,6 +368,9 @@ static DBusMessage *set_property(DBusConnection *conn,
} else if (g_str_equal(name, "Priority") == TRUE) {
connman_uint8_t priority;
+ if (type != DBUS_TYPE_BYTE)
+ return __connman_error_invalid_arguments(msg);
+
dbus_message_iter_get_basic(&value, &priority);
device->priority = priority;
diff --git a/src/network.c b/src/network.c
index 1e616e4f..3e27e7ef 100644
--- a/src/network.c
+++ b/src/network.c
@@ -158,6 +158,7 @@ static DBusMessage *set_property(DBusConnection *conn,
struct connman_network *network = data;
DBusMessageIter iter, value;
const char *name;
+ int type;
DBG("conn %p", conn);
@@ -172,9 +173,14 @@ static DBusMessage *set_property(DBusConnection *conn,
CONNMAN_SECURITY_PRIVILEGE_MODIFY) < 0)
return __connman_error_permission_denied(msg);
+ type = dbus_message_iter_get_arg_type(&value);
+
if (g_str_equal(name, "Remember") == TRUE) {
connman_bool_t remember;
+ if (type != DBUS_TYPE_BOOLEAN)
+ return __connman_error_invalid_arguments(msg);
+
dbus_message_iter_get_basic(&value, &remember);
if (network->remember == remember)
@@ -184,6 +190,9 @@ static DBusMessage *set_property(DBusConnection *conn,
} else if (g_str_equal(name, "WiFi.Passphrase") == TRUE) {
const char *passphrase;
+ if (type != DBUS_TYPE_STRING)
+ return __connman_error_invalid_arguments(msg);
+
if (__connman_security_check_privilege(msg,
CONNMAN_SECURITY_PRIVILEGE_SECRET) < 0)
return __connman_error_permission_denied(msg);
@@ -195,6 +204,9 @@ static DBusMessage *set_property(DBusConnection *conn,
} else if (g_str_equal(name, "Priority") == TRUE) {
connman_uint8_t priority;
+ if (type != DBUS_TYPE_BYTE)
+ return __connman_error_invalid_arguments(msg);
+
dbus_message_iter_get_basic(&value, &priority);
network->priority = priority;