---
id: CVE-2026-99110
title: 'smb: client: fix heap overflow in cifs_do_set_acl()'
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  smb: client: fix heap overflow in cifs_do_set_acl()

  cifs_set_acl() validates ACL size using posix_acl_xattr_size():

          4 + (count * 8)  // 4-byte header + 8 byte…
severity: high
cvss: 7
cvssVector: 'CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H'
cvssSource: cna
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= dc1af4c4b4721abfa07b351063825acc7e69cc66 <
    68652afb9b9adf70125971abee9b95341e042249
  - >-
    Linux >= dc1af4c4b4721abfa07b351063825acc7e69cc66 <
    9312a00215602ba028495ef3fa00fb84af0478e0
  - >-
    Linux >= dc1af4c4b4721abfa07b351063825acc7e69cc66 <
    d96f3365ce61c5f39602955af43c8174548dee98
  - >-
    Linux >= dc1af4c4b4721abfa07b351063825acc7e69cc66 <
    596b4062e6c75bdd85a7f2b7f2087a872dc420ac
  - >-
    Linux >= dc1af4c4b4721abfa07b351063825acc7e69cc66 <
    1dac61e2c29d1a71784604b48cf3b1234a65ec29
  - Linux 6.2
published: '2026-10-28'
updated: '2026-10-31'
sourceUpdated: '2026-10-31T12:43:03.377Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-99110'
references:
  - url: 'https://git.kernel.org/stable/c/68652afb9b9adf70125971abee9b95341e042249'
  - url: 'https://git.kernel.org/stable/c/9312a00215602ba028495ef3fa00fb84af0478e0'
  - url: 'https://git.kernel.org/stable/c/d96f3365ce61c5f39602955af43c8174548dee98'
  - url: 'https://git.kernel.org/stable/c/596b4062e6c75bdd85a7f2b7f2087a872dc420ac'
  - url: 'https://git.kernel.org/stable/c/1dac61e2c29d1a71784604b48cf3b1234a65ec29'
tags:
  - cve.org
epss: 0.00134
epssPercentile: 0.02959
ingestedAt: '2026-10-28T11:09:40.454Z'
---

## Overview

In the Linux kernel, the following vulnerability has been resolved:

smb: client: fix heap overflow in cifs_do_set_acl()

cifs_set_acl() validates ACL size using posix_acl_xattr_size():

        4 + (count * 8)  // 4-byte header + 8 bytes per ACE

cifs_do_set_acl() then calls posix_acl_to_cifs() to write the CIFS
wire format into the same buffer:

        6 + (count * 10)  // 6-byte header + 10 bytes per ACE

An ACL that passes the xattr-based check in cifs_set_acl() can
overflow the heap when posix_acl_to_cifs() writes the larger CIFS
format.

Validate the CIFS format size against the remaining buffer space and
USHRT_MAX before converting--data_count is __u16, so sizes above
USHRT_MAX truncate the on-wire packet length, causing the server to
apply a partial ACL.  Replace MaxDataCount = 1000 with
min(CIFSMaxBufSize, USHRT_MAX).

## Affected

- `Linux >= dc1af4c4b4721abfa07b351063825acc7e69cc66 < 68652afb9b9adf70125971abee9b95341e042249`
- `Linux >= dc1af4c4b4721abfa07b351063825acc7e69cc66 < 9312a00215602ba028495ef3fa00fb84af0478e0`
- `Linux >= dc1af4c4b4721abfa07b351063825acc7e69cc66 < d96f3365ce61c5f39602955af43c8174548dee98`
- `Linux >= dc1af4c4b4721abfa07b351063825acc7e69cc66 < 596b4062e6c75bdd85a7f2b7f2087a872dc420ac`
- `Linux >= dc1af4c4b4721abfa07b351063825acc7e69cc66 < 1dac61e2c29d1a71784604b48cf3b1234a65ec29`
- `Linux 6.2`

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
