From: Junio C Hamano <gitster@pobox.com>
To: git@vger.kernel.org
Cc: Linux Kernel <linux-kernel@vger.kernel.org>,
git-packagers@googlegroups.com
Subject: [ANNOUNCE] Git 2.56.1 and friends
Date: Tue, 10 Nov 2026 10:03:38 -0800 [thread overview]
Message-ID: <xmqqh5hosgw5.fsf@gitster.g> (raw)
A maintenance release Git 2.56.1 and others for older maintenance
tracks down to maint-2.43 are now available at the usual places.
This is a set of coordinated security fix releases. Please update
at your earliest convenience.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/
The following public repositories all have a copy of the v2.50.2,
v2.51.3, v2.52.1, v2.53.1, v2.54.1, v2.55.1, and v2.56.1 tags:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
Credit for organizing the set of these releases goes to Johannes
Schindelin. Credit for finding the vulnerabilities goes to Luke
Martin and pwn2addr. Credit for fixing them goes to Toon Claes,
Karthik Nayak, and Kaartic Sivaraam. The xdiff hardening is based
on a patch by Jeff King, with help from Toon Claes and Christian
Couder.
------------------------------------------------------------
Git v2.56.1 Release Notes
=========================
This release merges up the fix that appears in v2.50.2, v2.51.3,
v2.52.1, v2.53.1, v2.54.1 and v2.55.1 to address CVE-2026-111760,
CVE-2026-113408, CVE-2026-114466, CVE-2026-114467, CVE-2026-114469
and CVE-2026-105437; see the release notes for these versions for
details.
------------------------------------------------------------
Git v2.50.2 Release Notes
=========================
This addresses the security issues CVE-2026-111760, CVE-2026-113408,
CVE-2026-114466, CVE-2026-114467, CVE-2026-114469 and CVE-2026-105437.
This release also backports fixes necessary to let the CI builds pass
successfully.
Fixes since v2.50.1
-------------------
* CVE-2026-111760:
Recursive clones are susceptible to Remote Code Execution: an
attacker-controlled repository can be crafted in a way that exploits
a bug in Git whereby Git can be fooled into overwriting a gitfile
(used for submodules) with a symbolic link that then points to a
directory with malicious config or hooks. The config or hooks may
have attacker-specified code.
See <https://github.com/git/git/security/advisories/GHSA-vp2w-7xxj-jvxr>
for details.
* CVE-2026-113408:
It is possible for a server to advertise an unborn HEAD that contains
path-traversal characters (e.g., `refs/heads/../../../TARGET`). With
the files ref backend that can lead to ref-updating actions to write
to unwanted files.
See <https://gitlab.com/gitlab-org/git/-/work_items/809> for details.
* CVE-2026-114467:
When Git strips the GPG signatures from a commit message, it only
accounts for two signatures. A commit message containing more than
two signatures therefore causes a stack memory corruption.
This can be triggered when using `git merge` with a tag which
contains more than two signatures. As such, this makes way for a DoS
attack which can potentially also affect forges when such a tag is
pushed to a remote and a merge action is initiated.
See <https://gitlab.com/gitlab-org/git/-/work_items/810> for details.
* CVE-2026-114469:
Git rejects patches larger than ~1 GiB, because its patch application
code does not work well with large files. That check, however, only
considered the size of the patch as it appears in the input, which for
binary patches is much smaller than the size of the file the patch
describes, as binary patches are compressed and encoded. A binary
patch that inflates to a very large size therefore slipped past the
check and crashed Git with an out-of-bounds read.
See <https://gitlab.com/gitlab-org/git/-/work_items/811> for details.
* CVE-2026-105437:
When merging, Git computes the size of the buffer holding the merge
result in a way that can overflow for very large merges, which can be
triggered by a large number of conflicts combined with a large
`conflict-marker-size`. The resulting buffer can then be too small,
and Git writes past its end (and, before and after that, before its
start), corrupting the heap.
See <https://gitlab.com/gitlab-org/git/-/work_items/814> for details.
* CVE-2026-114466:
In response to CVE-2019-1348, `fast-import` disallows the
`export-marks` feature by default. The features
`rewrite-submodules-to` and `rewrite-submodules-from` as well as the
option `export-pack-edges` that were introduced in the meantime also
allow reading from arbitrary paths, and are therefore now also
disallowed by default.
See <https://gitlab.com/gitlab-org/git/-/work_items/812> for details.
* Defense-in-depth: read-cache: reject cache entries with over-long
names.
* Various fix-ups on HTTP tests.
* Test update.
* HTTP Header redaction code has been adjusted for a newer version of
cURL library that shows its traces differently from earlier
versions.
* The `imap-send` command was adjusted to work with OpenSSL 4.0.
* Replace macos-13 used at GitHub CI with macos-14, and macos-14 with
macos-15.
* Work around a bug in the iconv library shipped with macOS 14 and 15
that fails to correctly handle stateful ISO/IEC 2022 encoded strings.
* ci: fix broken jobs on Ubuntu 25.10 caused by switch to sudo-rs(1).
* ci(dockerized): raise the PID limit for private repositories.
* ci: bump debian-11 job to debian-12.
* ci: skip CVS and P4 tests in leaks job, too.
* mingw: drop the -D_USE_32BIT_TIME_T option, stop using nedmalloc, and
only use -Wl,--large-address-aware for 32-bit builds.
* Update GitHub Actions jobs to avoid warnings against using deprecated
version of Node.js.
----------------------------------------------------------------
Changes since v2.56.0 are as follows:
Beat Bolli (3):
imap-send: use the OpenSSL API to access the subject alternative names
imap-send: use the OpenSSL API to access the subject common name
imap-send: move common code into function host_matches()
Colin Stagner (1):
ci: ubuntu: use GNU coreutils for dirname
Collin Funk (4):
global: constify some pointers that are not written to
gpg-interface: remove an unnecessary NULL initialization
bloom: remove a misleading const qualifier
dir: avoid -Wdiscarded-qualifiers in remove_path()
Elijah Newren (1):
read-cache: reject cache entries with over-long names
Jeff King (30):
revision: make handle_dotdot() interface less confusing
convert: add const to fix strchr() warnings
http: add const to fix strchr() warnings
transport-helper: drop const to fix strchr() warnings
pager: explicitly cast away strchr() constness
run-command: explicitly cast away constness when assigning to void
pseudo-merge: fix disk reads from find_pseudo_merge()
rev-parse: simplify dotdot parsing
skip_prefix(): check const match between in and out params
revision: avoid writing to const string for parent marks
pkt-line: make packet_reader.line non-const
rev-parse: avoid writing to const string for parent marks
range-diff: drop const to fix strstr() warnings
config: store allocated string in non-const pointer
http: drop const to fix strstr() warning
ref-filter: factor out refname component counting
refs/files-backend: drop const to fix strchr() warning
ref-filter: simplify lstrip_ref_components() memory handling
git-compat-util: fix CONST_OUTPARAM typo and indentation
ref-filter: simplify rstrip_ref_components() memory handling
ref-filter: avoid strrchr() in rstrip_ref_components()
ref-filter: clarify lstrip/rstrip component counting
find_last_dir_sep(): convert inline function to macro
ci: bump debian-11 job to debian-12
test-lib: allow lazy prerequisite snippets as here-docs
t5551: handle trailing slashes in expected cookies output
t5563: add missing end-of-line in HTTP header
revert: initialize const value
curl: add support for curl_global_trace() components
http: handle curl stripping creds from effective url
Johannes Schindelin (19):
ci(dockerized): raise the PID limit for private repositories
ci: work around Debian 12's HTTP/2 authentication failures
ci(vs-build): adapt to Visual Studio 2026 default on windows-latest
mingw: drop the -D_USE_32BIT_TIME_T option
mingw: stop using nedmalloc
mingw: only use -Wl,--large-address-aware for 32-bit builds
t5564: use a short path for the SOCKS proxy socket
checkout: use size_t and st_add() for cache entry length in update_some()
read-cache: use size_t and st_add() for cache entry size in read_one_entry_opt()
cmake: stop trying to build the reftable and xdiff libraries
t1600-index: add expensive tests for over-long tree paths
ci(vs-build) make the VS-built git.exe adjust MSYSTEM/PATH
Git 2.50.2
Git 2.51.3
Git 2.52.1
Git 2.53.1
Git 2.54.1
Git 2.55.1
Git 2.56.1
Junio C Hamano (2):
GitHub CI: macos-13 images are no more
ci: skip CVS and P4 tests in leaks job, too
Kaartic Sivaraam (3):
git-compat-util: add st_add5() helper to detect size_t overflow
xdiff: use size_t for merge buffer size computations
xdiff: check for overflow when computing merge buffer size
Karthik Nayak (8):
base85: cleanup unused debug code
base85: introduce a new `chunk_and_encode85()` function
test-tool: add command to encode-chunk base85
apply: reject binary patches greater than MAX_APPLY_SIZE
apply: add tests mismatch in binary patch size
commit: rewrite `remove_signature()` to work with multiple signatures
fast-import: add safeguard around rewrite-submodules features
fast-import: add safeguard around 'export-pack-edges'
Patrick Steinhardt (15):
build: tolerate use of _Generic from glibc 2.43 with Clang
ci: fix broken jobs on Ubuntu 25.10 caused by switch to sudo-rs(1)
t7528: work around ETOOMANY in OpenSSH 10.1 and newer
meson: simplify iconv-emits-BOM check
meson: detect broken iconv that requires ICONV_RESTART_RESET
gitlab-ci: update to macOS 15 images
README: add GitLab CI badge to make it more discoverable
t0021: skip EXPENSIVE test that is broken without SIZE_T_IS_64BIT
t4141: fix inefficient use of dd(1)
t5608: reduce maximum disk usage
t7508: skip EXPENSIVE test that is broken without SIZE_T_IS_64BIT
t7900: clean up large EXPENSIVE repository
t: use `test_bool_env` to parse GIT_TEST_LONG
gitlab-ci: disable RAM disk on macOS jobs
gitlab-ci: enable "GIT_TEST_LONG"
Paul Tarjan (1):
t7800: fix racy "difftool --dir-diff syncs worktree" test
René Scharfe (2):
macOS: make Homebrew use configurable
macOS: use iconv from Homebrew if needed and present
Tamir Duberstein (2):
t4205: compare huge output without diff
ci: use twice the CPU count on both providers
Toon Claes (6):
meson: ignore subprojects/.wraplock
meson: only detect ICONV_OMITS_BOM if possible
meson: use is_cross_build() where possible
connect: validate unborn HEAD symref-target in protocol v2
connect: validate born ref symref-target in protocol v2
connect: validate ref names in protocol v2 ls-refs response
Torsten Bögershausen (2):
utf8.c: prepare workaround for iconv under macOS 14/15
utf8.c: enable workaround for iconv under macOS 14/15
reply other threads:[~2026-11-10 18:03 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=xmqqh5hosgw5.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=git-packagers@googlegroups.com \
--cc=git@vger.kernel.org \
--cc=linux-kernel@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®