From 798f888e7b2b0c94705bd1aea9a81934a1331d03 Mon Sep 17 00:00:00 2001 From: Claudio Takahasi Date: Fri, 2 Jun 2006 14:57:57 +0000 Subject: RemoveBonding: return DoesNotExist when the link key is not found --- hcid/dbus-adapter.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/hcid/dbus-adapter.c b/hcid/dbus-adapter.c index 86a43c81..1d1b7762 100644 --- a/hcid/dbus-adapter.c +++ b/hcid/dbus-adapter.c @@ -1783,7 +1783,7 @@ static DBusHandlerResult handle_dev_remove_bonding_req(DBusConnection *conn, DBu DBusMessage *signal; DBusError err; char filename[PATH_MAX + 1]; - char *addr_ptr; + char *addr_ptr, *str; bdaddr_t bdaddr; int dd; @@ -1807,12 +1807,21 @@ static DBusHandlerResult handle_dev_remove_bonding_req(DBusConnection *conn, DBu snprintf(filename, PATH_MAX, "%s/%s/linkkeys", STORAGEDIR, dbus_data->address); - /* Delete the link key from storage */ - if (textfile_del(filename, addr_ptr)) { + /* textfile_del doesn't return an error when the key is not found */ + str = textfile_get(filename, addr_ptr); + if (!str) { hci_close_dev(dd); return error_bonding_does_not_exist(conn, msg); } + free(str); + + /* Delete the link key from storage */ + if (textfile_del(filename, addr_ptr) < 0) { + hci_close_dev(dd); + return error_failed(conn, msg, errno); + } + str2ba(addr_ptr, &bdaddr); /* Delete the link key from the Bluetooth chip */ -- cgit