diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2009-01-21 01:36:32 +0100 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2009-01-21 01:36:32 +0100 |
commit | 0b95857f52f88596c45679351f6e80ef17d6fc58 (patch) | |
tree | e94bbfadf77c999464ede14176b0ad1c544b6228 /src/network.c | |
parent | e49304f3457f0d4a135f5f88b7197f144b647636 (diff) | |
download | connman-0b95857f52f88596c45679351f6e80ef17d6fc58.tar.gz connman-0b95857f52f88596c45679351f6e80ef17d6fc58.tar.bz2 connman-0b95857f52f88596c45679351f6e80ef17d6fc58.zip |
Verify argument type before processing
Diffstat (limited to 'src/network.c')
-rw-r--r-- | src/network.c | 12 |
1 files changed, 12 insertions, 0 deletions
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; |