From: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
To: linux-bluetooth@vger.kernel.org
Subject: [PATCH BlueZ v2 02/10] shared/ad: Fix reading past the name that was copied
Date: Thu, 20 Aug 2026 14:30:29 -0400 [thread overview]
Message-ID: <20260820183037.2713973-3-luiz.dentz@gmail.com> (raw)
In-Reply-To: <20260820183037.2713973-1-luiz.dentz@gmail.com>
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
ad_replace_name() copies at most HCI_MAX_NAME_LENGTH bytes of the name
into its buffer, but then hands the full iov_len to strisutf8() and
strtoutf8().
The advertising data is up to 255 bytes, so a complete local name field
can hold 253 of them, and both end up reading 253 bytes out of a 250
byte buffer, 3 of them past its end.
Use the same clamped length throughout.
Assisted-by: Claude:claude-opus-5
---
src/shared/ad.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/shared/ad.c b/src/shared/ad.c
index b1d1b84611aa..ebee078500c6 100644
--- a/src/shared/ad.c
+++ b/src/shared/ad.c
@@ -276,15 +276,15 @@ static bool ad_replace_uuid128(struct bt_ad *ad, struct iovec *iov)
static bool ad_replace_name(struct bt_ad *ad, struct iovec *iov)
{
char utf8_name[HCI_MAX_NAME_LENGTH + 2];
+ size_t len = MIN(iov->iov_len, (size_t) HCI_MAX_NAME_LENGTH);
memset(utf8_name, 0, sizeof(utf8_name));
- strncpy(utf8_name, (const char *)iov->iov_base,
- MIN(iov->iov_len, HCI_MAX_NAME_LENGTH));
+ strncpy(utf8_name, (const char *)iov->iov_base, len);
- if (strisutf8(utf8_name, iov->iov_len))
+ if (strisutf8(utf8_name, len))
goto done;
- strtoutf8(utf8_name, iov->iov_len);
+ strtoutf8(utf8_name, len);
/* Remove leading and trailing whitespace characters */
strstrip(utf8_name);
--
2.54.0
next prev parent reply other threads:[~2026-08-20 18:30 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-20 18:30 [PATCH BlueZ v2 00/10] Replace the name2utf8 copies with str2utf8 Luiz Augusto von Dentz
2026-08-20 18:30 ` [PATCH BlueZ v2 01/10] eir: Fix stack buffer overflow when parsing the remote name Luiz Augusto von Dentz
2026-08-20 20:04 ` Replace the name2utf8 copies with str2utf8 bluez.test.bot
2026-08-20 18:30 ` Luiz Augusto von Dentz [this message]
2026-08-20 18:30 ` [PATCH BlueZ v2 03/10] unit/test-eir: Add tests for the longest local names Luiz Augusto von Dentz
2026-08-20 18:30 ` [PATCH BlueZ v2 04/10] shared/util: Make strnlenutf8 reject ill-formed sequences Luiz Augusto von Dentz
2026-08-20 18:30 ` [PATCH BlueZ v2 05/10] shared/util: Add str2utf8 Luiz Augusto von Dentz
2026-08-20 18:30 ` [PATCH BlueZ v2 06/10] unit/test-util: Add str2utf8 tests Luiz Augusto von Dentz
2026-08-20 18:30 ` [PATCH BlueZ v2 07/10] Replace the name2utf8 copies with str2utf8 Luiz Augusto von Dentz
2026-08-20 18:30 ` [PATCH BlueZ v2 08/10] device: Fix the name truncation splitting UTF-8 sequences Luiz Augusto von Dentz
2026-08-20 18:30 ` [PATCH BlueZ v2 09/10] device: Rename btd_device_device_set_name to btd_device_set_name Luiz Augusto von Dentz
2026-08-20 18:30 ` [PATCH BlueZ v2 10/10] unit/test-util: Cover strtoutf8 with the str2utf8 tests Luiz Augusto von Dentz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260820183037.2713973-3-luiz.dentz@gmail.com \
--to=luiz.dentz@gmail.com \
--cc=linux-bluetooth@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.