diff --git a/src/adapter.c b/src/adapter.c
index f2d805d..b8e790e 100644
--- a/src/adapter.c
+++ b/src/adapter.c
g_free(adapter->system_name);
g_free(adapter->stored_alias);
g_free(adapter->current_alias);
- g_free(adapter->modalias);
+ free(adapter->modalias);
g_free(adapter);
}
diff --git a/src/device.c b/src/device.c
index 65bb3c9..aa15e0a 100644
--- a/src/device.c
+++ b/src/device.c
g_free(device->path);
g_free(device->alias);
- g_free(device->modalias);
+ free(device->modalias);
g_free(device);
}
device->product = product;
device->version = version;
- g_free(device->modalias);
+ free(device->modalias);
device->modalias = bt_modalias(source, vendor, product, version);
g_dbus_emit_property_changed(dbus_conn, device->path,
diff --git a/src/uuid-helper.c b/src/uuid-helper.c
index f9d51ea..1995ea1 100644
--- a/src/uuid-helper.c
+++ b/src/uuid-helper.c
#endif
#include <stdlib.h>
+#include <stdio.h>
#include <errno.h>
#include <bluetooth/bluetooth.h>
char *bt_modalias(uint16_t source, uint16_t vendor,
uint16_t product, uint16_t version)
{
+ char *str;
+ int err;
+
switch (source) {
case 0x0001:
- return g_strdup_printf("%s:v%04Xp%04Xd%04X",
+ err = asprintf(&str, "%s:v%04Xp%04Xd%04X",
"bluetooth", vendor, product, version);
+ break;
case 0x0002:
- return g_strdup_printf("%s:v%04Xp%04Xd%04X",
+ err = asprintf(&str, "%s:v%04Xp%04Xd%04X",
"usb", vendor, product, version);
+ break;
+ default:
+ return NULL;
}
- return NULL;
+ if (err < 0)
+ return NULL;
+
+ return str;
}
char *bt_uuid2string(uuid_t *uuid)