Linux bluetooth development
 help / color / mirror / Atom feed
From: Bastien Nocera <hadess@hadess.net>
To: Luiz Augusto von Dentz <luiz.dentz@gmail.com>,
	 linux-bluetooth@vger.kernel.org
Subject: Re: [PATCH BlueZ v1 1/8] eir: Fix stack buffer overflow when parsing the remote name
Date: Thu, 20 Aug 2026 09:46:34 +0200	[thread overview]
Message-ID: <9ae70f091f093a644bec0f6ebc030e36a1f7a853.camel@hadess.net> (raw)
In-Reply-To: <20260819204008.2292225-2-luiz.dentz@gmail.com>

On Wed, 2026-08-19 at 16:40 -0400, Luiz Augusto von Dentz wrote:
> From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
> 
> name2utf8() copies len bytes into a HCI_MAX_NAME_LENGTH + 2, so 250,
> byte stack buffer without clamping len first.
> 
> eir_parse() only rejects a field once it runs past the end of the EIR
> data, and that data is up to 255 bytes, so field_len can be 254 and
> the
> data_len passed to name2utf8() can reach 253. strncpy() then writes
> 253
> bytes into the 250 byte buffer and leaves it unterminated, so the
> following g_strstrip() and g_strdup() also read past the end.
> 
> The EIR data comes from a remote device, either in an extended
> inquiry
> response or in an advertising report, so the length is attacker
> controlled.
> 
> Clamp len like the other name2utf8() copies already do. Parsing a 253
> byte EIR_NAME_COMPLETE field returned a 253 byte name before this
> change, and returns a 249 byte one after it.

This issue was embargoed, and this commit is the exact same one I sent
privately to fix that issue.

It would be nice to have either the authored-by or co-authored by tag.
Could you please also make sure to add:
"
Reported-by: @sprabhav7 (Prabhav S)

See:
https://github.com/bluez/bluez/security/advisories/GHSA-68h6-5qgp-3975
"

To the commit message. I'll work on the security advisory to get it
published.

Cheers

> 
> Assisted-by: Claude:claude-opus-5
> ---
>  src/eir.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/src/eir.c b/src/eir.c
> index 89c15995a546..95351d015323 100644
> --- a/src/eir.c
> +++ b/src/eir.c
> @@ -137,6 +137,8 @@ static char *name2utf8(const uint8_t *name,
> uint8_t len)
>  {
>  	char utf8_name[HCI_MAX_NAME_LENGTH + 2];
>  
> +	len = MIN(len, sizeof(utf8_name) - 1);
> +
>  	memset(utf8_name, 0, sizeof(utf8_name));
>  	strncpy(utf8_name, (char *) name, len);
>  	strtoutf8(utf8_name, len);

  parent reply	other threads:[~2026-08-20  7:46 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-19 20:40 [PATCH BlueZ v1 0/8] Replace the name2utf8 copies with str2utf8 Luiz Augusto von Dentz
2026-08-19 20:40 ` [PATCH BlueZ v1 1/8] eir: Fix stack buffer overflow when parsing the remote name Luiz Augusto von Dentz
2026-08-19 21:27   ` Replace the name2utf8 copies with str2utf8 bluez.test.bot
2026-08-20  7:46   ` Bastien Nocera [this message]
2026-08-20  8:14     ` [PATCH BlueZ v1 1/8] eir: Fix stack buffer overflow when parsing the remote name Bastien Nocera
2026-08-19 20:40 ` [PATCH BlueZ v1 2/8] shared/util: Make strnlenutf8 reject ill-formed sequences Luiz Augusto von Dentz
2026-08-19 20:40 ` [PATCH BlueZ v1 3/8] shared/util: Add str2utf8 Luiz Augusto von Dentz
2026-08-19 20:40 ` [PATCH BlueZ v1 4/8] unit/test-util: Add str2utf8 tests Luiz Augusto von Dentz
2026-08-19 20:40 ` [PATCH BlueZ v1 5/8] Replace the name2utf8 copies with str2utf8 Luiz Augusto von Dentz
2026-08-19 20:40 ` [PATCH BlueZ v1 6/8] device: Fix the name truncation splitting UTF-8 sequences Luiz Augusto von Dentz
2026-08-19 20:40 ` [PATCH BlueZ v1 7/8] device: Rename btd_device_device_set_name to btd_device_set_name Luiz Augusto von Dentz
2026-08-19 20:40 ` [PATCH BlueZ v1 8/8] 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=9ae70f091f093a644bec0f6ebc030e36a1f7a853.camel@hadess.net \
    --to=hadess@hadess.net \
    --cc=linux-bluetooth@vger.kernel.org \
    --cc=luiz.dentz@gmail.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox