diff options
| author | Marcel Holtmann <marcel@holtmann.org> | 2005-08-24 21:08:17 +0000 | 
|---|---|---|
| committer | Marcel Holtmann <marcel@holtmann.org> | 2005-08-24 21:08:17 +0000 | 
| commit | ba84f1e3781ef52666228d38ec6a0c27c5454d30 (patch) | |
| tree | 4b11e7f427dbb30fa6c252bd36f15953613796c0 | |
| parent | 87af78afc0d5753583825f061c36f7705762c576 (diff) | |
Fix D-Bus crashes
| -rw-r--r-- | hcid/dbus.c | 33 | 
1 files changed, 20 insertions, 13 deletions
| diff --git a/hcid/dbus.c b/hcid/dbus.c index 7f98c32f..d9d74d7a 100644 --- a/hcid/dbus.c +++ b/hcid/dbus.c @@ -120,7 +120,9 @@ static void free_pin_req(void *req)  void hcid_dbus_request_pin(int dev, struct hci_conn_info *ci)  {  	DBusMessage *message; -#ifndef HAVE_DBUS_MESSAGE_APPEND_ARGS +#ifdef HAVE_DBUS_MESSAGE_APPEND_ARGS +	uint8_t *addr = (uint8_t *) &ci->bdaddr; +#else  	DBusMessageIter iter;  #endif  	DBusPendingCall *pending = NULL; @@ -140,7 +142,7 @@ void hcid_dbus_request_pin(int dev, struct hci_conn_info *ci)  #ifdef HAVE_DBUS_MESSAGE_APPEND_ARGS  	dbus_message_append_args(message, DBUS_TYPE_BOOLEAN, &ci->out,  			DBUS_TYPE_ARRAY, DBUS_TYPE_BYTE, -			&ci->bdaddr, sizeof(bdaddr_t), DBUS_TYPE_INVALID); +			&addr, sizeof(bdaddr_t), DBUS_TYPE_INVALID);  #else  	dbus_message_append_iter_init(message, &iter); @@ -173,10 +175,12 @@ failed:  void hcid_dbus_inquiry_result(bdaddr_t *local, bdaddr_t *peer, uint32_t class, int8_t rssi)  {  	DBusMessage *message; -#ifndef HAVE_DBUS_MESSAGE_APPEND_ARGS +	char local_addr[18], peer_addr[18]; +#ifdef HAVE_DBUS_MESSAGE_APPEND_ARGS +	char *local_ptr = local_addr, *peer_ptr = peer_addr; +#else  	DBusMessageIter iter;  #endif -	char local_addr[18], peer_addr[18];  	ba2str(local, local_addr);  	ba2str(peer, peer_addr); @@ -190,10 +194,10 @@ void hcid_dbus_inquiry_result(bdaddr_t *local, bdaddr_t *peer, uint32_t class, i  #ifdef HAVE_DBUS_MESSAGE_APPEND_ARGS  	dbus_message_append_args(message, -					DBUS_TYPE_STRING, local_addr, -					DBUS_TYPE_STRING, peer_addr, -					DBUS_TYPE_UINT32, class, -					DBUS_TYPE_INT32, rssi, +					DBUS_TYPE_STRING, &local_ptr, +					DBUS_TYPE_STRING, &peer_ptr, +					DBUS_TYPE_UINT32, &class, +					DBUS_TYPE_INT32, &rssi,  					DBUS_TYPE_INVALID);  #else  	dbus_message_append_iter_init(message, &iter); @@ -220,10 +224,13 @@ failed:  void hcid_dbus_remote_name(bdaddr_t *local, bdaddr_t *peer, char *name)  {  	DBusMessage *message; -#ifndef HAVE_DBUS_MESSAGE_APPEND_ARGS +	char local_addr[18], peer_addr[18]; +#ifdef HAVE_DBUS_MESSAGE_APPEND_ARGS +	char *local_ptr = local_addr, *peer_ptr = peer_addr; +	char *name_ptr = name; +#else  	DBusMessageIter iter;  #endif -	char local_addr[18], peer_addr[18];  	ba2str(local, local_addr);  	ba2str(peer, peer_addr); @@ -237,9 +244,9 @@ void hcid_dbus_remote_name(bdaddr_t *local, bdaddr_t *peer, char *name)  #ifdef HAVE_DBUS_MESSAGE_APPEND_ARGS  	dbus_message_append_args(message, -					DBUS_TYPE_STRING, local_addr, -					DBUS_TYPE_STRING, peer_addr, -					DBUS_TYPE_STRING, name, +					DBUS_TYPE_STRING, &local_ptr, +					DBUS_TYPE_STRING, &peer_ptr, +					DBUS_TYPE_STRING, &name_ptr,  					DBUS_TYPE_INVALID);  #else  	dbus_message_append_iter_init(message, &iter); | 
