diff options
Diffstat (limited to 'hcid')
-rw-r--r-- | hcid/dbus-adapter.c | 4 | ||||
-rw-r--r-- | hcid/security.c | 3 |
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); } |