[PATCH 2.40 0/4] Backport %mc fixes to 2.40

Adarsh Jagadish Kamini adarsh.jagadish.kamini@est.tech
Thu Jul 23 18:39:17 GMT 2026


This backports the scanf %mc fixes to 2.40, which was still missing
them. It matches what's already on 2.41 and 2.42.

Patch 1 is the CVE-2026-5450 fix for the one-byte overflow in the
%mc/%mC buffer allocation. On its own that isn't much use, since %mc
is still broken without the BZ #12701 work, and fixing 12701 outright
has backwards-compatibility problems. So this also pulls in DJ's
backwards-compatible variant that expands and NUL-pads the buffer while
still allowing truncated reads, plus the matching "reject insufficient
character data" change.

Patch 2 (xfmemopen) is a prerequisite for the BZ #12701 tests; it
didn't exist on 2.40 yet.

Order:

  1. %mc overflow fix (CVE-2026-5450)
  2. xfmemopen test helper
  3. allow partially-filled %mc buffers
  4. reject insufficient character data

Tested on x86_64. tst-vfscanf-bz34008, tst-bz12701-c, tst-bz12701-c2,
tst-bz12701-lc and tst-bz12701-lc2 all pass.

DJ Delorie (1):
  stdio-common: Allow partially-filled %mc buffers [BZ #12701]

Maciej W. Rozycki (2):
  support: Implement 'xfmemopen' for seamless 'fmemopen' use
  stdio-common: Reject insufficient character data in scanf [BZ #12701]

Rocket Ma (1):
  stdio-common: Fix buffer overflow in scanf %mc [BZ #34008]

 localedata/Makefile                |   2 +
 localedata/tst-bz12701-lc.c        | 218 +++++++++++++++++++++++++++++
 localedata/tst-bz12701-lc2.c       |  47 +++++++
 stdio-common/Makefile              |   6 +
 stdio-common/tst-bz12701-c.c       | 169 ++++++++++++++++++++++
 stdio-common/tst-bz12701-c2.c      |  46 ++++++
 stdio-common/tst-vfscanf-bz34008.c |  48 +++++++
 stdio-common/vfscanf-internal.c    |  23 ++-
 support/Makefile                   |   1 +
 support/xfmemopen.c                |  31 ++++
 support/xstdio.h                   |   1 +
 11 files changed, 585 insertions(+), 7 deletions(-)
 create mode 100644 localedata/tst-bz12701-lc.c
 create mode 100644 localedata/tst-bz12701-lc2.c
 create mode 100644 stdio-common/tst-bz12701-c.c
 create mode 100644 stdio-common/tst-bz12701-c2.c
 create mode 100644 stdio-common/tst-vfscanf-bz34008.c
 create mode 100644 support/xfmemopen.c

-- 
2.34.1



More information about the Libc-alpha mailing list