Linux bluetooth development
 help / color / mirror / Atom feed
* [bluez/bluez] 13b14d: shared/bap: Use util_ltv_foreach to process metadata
@ 2026-07-09 16:30 Tom Catshoek
  0 siblings, 0 replies; only message in thread
From: Tom Catshoek @ 2026-07-09 16:30 UTC (permalink / raw)
  To: linux-bluetooth

  Branch: refs/heads/master
  Home:   https://github.com/bluez/bluez
  Commit: 13b14db95089382701f54a46e6ef0120b69d4a62
      https://github.com/bluez/bluez/commit/13b14db95089382701f54a46e6ef0120b69d4a62
  Author: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
  Date:   2026-07-07 (Tue, 07 Jul 2026)

  Changed paths:
    M src/shared/bap.c

  Log Message:
  -----------
  shared/bap: Use util_ltv_foreach to process metadata

This makes use of util_ltv_foreach to process the metadata entries
instead of attempting to iterate over the entries manually which
probably only works with the exact same order as used by PTS.


  Commit: 9e9f0a370c591c126c39225f5f50b88915d11095
      https://github.com/bluez/bluez/commit/9e9f0a370c591c126c39225f5f50b88915d11095
  Author: Rahul Samana <rahul.samana@oss.qualcomm.com>
  Date:   2026-07-07 (Tue, 07 Jul 2026)

  Changed paths:
    M gobex/gobex.c

  Log Message:
  -----------
  gobex: Fix use-after-free when cancelling SRM PUT transfer

In SRM mode put_get_data() queues the next packet during encoding of
the current one, so transfer->req_id and pending_req->id can diverge.
When g_obex_cancel_transfer() cancels the queued packet from tx_queue,
cancel_complete() frees the transfer while pending_req still holds a
callback pointing to it. Its G_OBEX_DEFAULT_TIMEOUT (10s) then fires
on freed memory causing a SIGSEGV.

Fix by clearing pending_req->rsp_func if it belongs to the same
transfer being cancelled.


  Commit: 82af2beafc39510e2c4a439bf44faea711d6503f
      https://github.com/bluez/bluez/commit/82af2beafc39510e2c4a439bf44faea711d6503f
  Author: Tom Catshoek <tomcatshoek@zeelandnet.nl>
  Date:   2026-07-09 (Thu, 09 Jul 2026)

  Changed paths:
    M src/adapter.c

  Log Message:
  -----------
  adapter: Fix crash on UUID discovery filter match

is_filter_match() looks up each discovery-filter UUID in the queue of
services parsed from a device advertisement. When that services list was
migrated from a GSList to a struct queue, the queue_find() call kept
GLib's g_slist_find_custom() argument order, passing the UUID string
where queue_find() expects a match function and the comparison function
where it expects the match data.

As a result queue_find() calls the UUID string as if it were a function,
jumping into non-executable heap and crashing bluetoothd with SIGSEGV as
soon as an advertisement matches a UUID filter configured via
SetDiscoveryFilter.

Add a queue_match_func_t helper and pass the arguments in the correct
order.

Fixes: https://github.com/bluez/bluez/issues/2282


Compare: https://github.com/bluez/bluez/compare/5c1c679ec304...82af2beafc39

To unsubscribe from these emails, change your notification settings at https://github.com/bluez/bluez/settings/notifications

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-07-09 16:30 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-09 16:30 [bluez/bluez] 13b14d: shared/bap: Use util_ltv_foreach to process metadata Tom Catshoek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox