diff --git a/src/event.c b/src/event.c
index d7daed2..a5c67d2 100644
--- a/src/event.c
+++ b/src/event.c
#include <sys/stat.h>
#include <bluetooth/bluetooth.h>
+#include <bluetooth/hci.h>
+#include <bluetooth/sdp.h>
+#include <bluetooth/mgmt.h>
#include <glib.h>
#include <dbus/dbus.h>
confirm_name, legacy, data, data_len);
}
-void btd_event_remote_name(bdaddr_t *local, bdaddr_t *peer, char *name)
+void btd_event_remote_name(bdaddr_t *local, bdaddr_t *peer, const char *name)
{
struct btd_adapter *adapter;
struct btd_device *device;
char filename[PATH_MAX + 1];
char local_addr[18], peer_addr[18];
GKeyFile *key_file;
- char *data;
+ char *data, utf8_name[MGMT_MAX_NAME_LENGTH + 1];
gsize length = 0;
if (!g_utf8_validate(name, -1, NULL)) {
int i;
+ memset(utf8_name, 0, sizeof(utf8_name));
+ strncpy(utf8_name, name, MGMT_MAX_NAME_LENGTH);
+
/* Assume ASCII, and replace all non-ASCII with spaces */
- for (i = 0; name[i] != '\0'; i++) {
- if (!isascii(name[i]))
- name[i] = ' ';
+ for (i = 0; utf8_name[i] != '\0'; i++) {
+ if (!isascii(utf8_name[i]))
+ utf8_name[i] = ' ';
}
/* Remove leading and trailing whitespace characters */
- g_strstrip(name);
+ g_strstrip(utf8_name);
+
+ name = utf8_name;
}
if (!get_adapter_and_device(local, peer, &adapter, &device, FALSE))
}
void btd_event_conn_complete(bdaddr_t *local, bdaddr_t *peer, uint8_t bdaddr_type,
- char *name, uint32_t class)
+ const char *name, uint32_t class)
{
struct btd_adapter *adapter;
struct btd_device *device;
diff --git a/src/event.h b/src/event.h
index 1aa8704..aa8548b 100644
--- a/src/event.h
+++ b/src/event.h
int8_t rssi, bool confirm_name,
bool legacy, uint8_t *data,
uint8_t data_len);
-void btd_event_remote_name(bdaddr_t *local, bdaddr_t *peer, char *name);
+void btd_event_remote_name(bdaddr_t *local, bdaddr_t *peer, const char *name);
void btd_event_conn_complete(bdaddr_t *local, bdaddr_t *peer, uint8_t bdaddr_type,
- char *name, uint32_t class);
+ const char *name, uint32_t class);
void btd_event_conn_failed(bdaddr_t *local, bdaddr_t *peer, uint8_t status);
void btd_event_disconn_complete(bdaddr_t *local, bdaddr_t *peer);
void btd_event_simple_pairing_complete(bdaddr_t *local, bdaddr_t *peer, uint8_t status);