summaryrefslogtreecommitdiffstats
path: root/hcid
diff options
context:
space:
mode:
Diffstat (limited to 'hcid')
-rw-r--r--hcid/dbus-adapter.c4
-rw-r--r--hcid/security.c3
2 files changed, 5 insertions, 2 deletions
diff --git a/hcid/dbus-adapter.c b/hcid/dbus-adapter.c
index 3fbd0c36..2989536c 100644
--- a/hcid/dbus-adapter.c
+++ b/hcid/dbus-adapter.c
@@ -1036,8 +1036,8 @@ static DBusHandlerResult handle_dev_set_name_req(DBusConnection *conn, DBusMessa
dbus_error_free(&err);
return error_invalid_arguments(conn, msg);
}
-
- if (strlen(str_ptr) == 0) {
+
+ if (strlen(str_ptr) == 0 || !g_utf8_validate(str_ptr, -1, NULL)) {
error("Name change failed: Invalid parameter");
return error_invalid_arguments(conn, msg);
}
diff --git a/hcid/security.c b/hcid/security.c
index d44bfea4..e1c29ea9 100644
--- a/hcid/security.c
+++ b/hcid/security.c
@@ -464,7 +464,10 @@ static inline void remote_name_information(int dev, bdaddr_t *sba, void *ptr)
bacpy(&dba, &evt->bdaddr);
if (!evt->status) {
+ char *end;
memcpy(name, evt->name, 248);
+ if (!g_utf8_validate(name, -1, &end))
+ *end = '\0';
write_device_name(sba, &dba, name);
}