Skip to content

Commit e7f0085

Browse files
committed
Merge tag 'v2.43.4'
Git 2.43.4 Signed-off-by: Johannes Schindelin <[email protected]>
2 parents a3be914 + 1f2e64e commit e7f0085

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+1303
-109
lines changed

.github/workflows/check-whitespace.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
check-whitespace:
2020
runs-on: ubuntu-latest
2121
steps:
22-
- uses: actions/checkout@v3
22+
- uses: actions/checkout@v4
2323
with:
2424
fetch-depth: 0
2525

.github/workflows/main.yml

+19-19
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ jobs:
6363
echo "skip_concurrent=$skip_concurrent" >>$GITHUB_OUTPUT
6464
- name: skip if the commit or tree was already tested
6565
id: skip-if-redundant
66-
uses: actions/github-script@v6
66+
uses: actions/github-script@v7
6767
if: steps.check-ref.outputs.enabled == 'yes'
6868
with:
6969
github-token: ${{secrets.GITHUB_TOKEN}}
@@ -112,7 +112,7 @@ jobs:
112112
group: windows-build-${{ github.ref }}
113113
cancel-in-progress: ${{ needs.ci-config.outputs.skip_concurrent == 'yes' }}
114114
steps:
115-
- uses: actions/checkout@v3
115+
- uses: actions/checkout@v4
116116
- uses: git-for-windows/setup-git-for-windows-sdk@v1
117117
- name: build
118118
shell: bash
@@ -123,7 +123,7 @@ jobs:
123123
- name: zip up tracked files
124124
run: git archive -o artifacts/tracked.tar.gz HEAD
125125
- name: upload tracked files and build artifacts
126-
uses: actions/upload-artifact@v3
126+
uses: actions/upload-artifact@v4
127127
with:
128128
name: windows-artifacts
129129
path: artifacts
@@ -140,7 +140,7 @@ jobs:
140140
cancel-in-progress: ${{ needs.ci-config.outputs.skip_concurrent == 'yes' }}
141141
steps:
142142
- name: download tracked files and build artifacts
143-
uses: actions/download-artifact@v3
143+
uses: actions/download-artifact@v4
144144
with:
145145
name: windows-artifacts
146146
path: ${{github.workspace}}
@@ -157,7 +157,7 @@ jobs:
157157
run: ci/print-test-failures.sh
158158
- name: Upload failed tests' directories
159159
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
160-
uses: actions/upload-artifact@v3
160+
uses: actions/upload-artifact@v4
161161
with:
162162
name: failed-tests-windows
163163
path: ${{env.FAILED_TEST_ARTIFACTS}}
@@ -176,10 +176,10 @@ jobs:
176176
group: vs-build-${{ github.ref }}-${{ matrix.arch }}
177177
cancel-in-progress: ${{ needs.ci-config.outputs.skip_concurrent == 'yes' }}
178178
steps:
179-
- uses: actions/checkout@v3
179+
- uses: actions/checkout@v4
180180
- uses: git-for-windows/setup-git-for-windows-sdk@v1
181181
- name: initialize vcpkg
182-
uses: actions/checkout@v3
182+
uses: actions/checkout@v4
183183
with:
184184
repository: 'microsoft/vcpkg'
185185
path: 'compat/vcbuild/vcpkg'
@@ -211,7 +211,7 @@ jobs:
211211
- name: zip up tracked files
212212
run: git archive -o artifacts/tracked.tar.gz HEAD
213213
- name: upload tracked files and build artifacts
214-
uses: actions/upload-artifact@v3
214+
uses: actions/upload-artifact@v4
215215
with:
216216
name: vs-artifacts-${{ matrix.arch }}
217217
path: artifacts
@@ -229,7 +229,7 @@ jobs:
229229
steps:
230230
- uses: git-for-windows/setup-git-for-windows-sdk@v1
231231
- name: download tracked files and build artifacts
232-
uses: actions/download-artifact@v3
232+
uses: actions/download-artifact@v4
233233
with:
234234
name: vs-artifacts-x64
235235
path: ${{github.workspace}}
@@ -247,7 +247,7 @@ jobs:
247247
run: ci/print-test-failures.sh
248248
- name: Upload failed tests' directories
249249
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
250-
uses: actions/upload-artifact@v3
250+
uses: actions/upload-artifact@v4
251251
with:
252252
name: failed-tests-windows
253253
path: ${{env.FAILED_TEST_ARTIFACTS}}
@@ -296,15 +296,15 @@ jobs:
296296
runs_on_pool: ${{matrix.vector.pool}}
297297
runs-on: ${{matrix.vector.pool}}
298298
steps:
299-
- uses: actions/checkout@v3
299+
- uses: actions/checkout@v4
300300
- run: ci/install-dependencies.sh
301301
- run: ci/run-build-and-tests.sh
302302
- name: print test failures
303303
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
304304
run: ci/print-test-failures.sh
305305
- name: Upload failed tests' directories
306306
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
307-
uses: actions/upload-artifact@v3
307+
uses: actions/upload-artifact@v4
308308
with:
309309
name: failed-tests-${{matrix.vector.jobname}}
310310
path: ${{env.FAILED_TEST_ARTIFACTS}}
@@ -330,9 +330,9 @@ jobs:
330330
runs-on: ubuntu-latest
331331
container: ${{matrix.vector.image}}
332332
steps:
333-
- uses: actions/checkout@v3
333+
- uses: actions/checkout@v4
334334
if: matrix.vector.jobname != 'linux32'
335-
- uses: actions/checkout@v1
335+
- uses: actions/checkout@v1 # cannot be upgraded because Node.js Actions aren't supported in this container
336336
if: matrix.vector.jobname == 'linux32'
337337
- run: ci/install-docker-dependencies.sh
338338
- run: ci/run-build-and-tests.sh
@@ -341,13 +341,13 @@ jobs:
341341
run: ci/print-test-failures.sh
342342
- name: Upload failed tests' directories
343343
if: failure() && env.FAILED_TEST_ARTIFACTS != '' && matrix.vector.jobname != 'linux32'
344-
uses: actions/upload-artifact@v3
344+
uses: actions/upload-artifact@v4
345345
with:
346346
name: failed-tests-${{matrix.vector.jobname}}
347347
path: ${{env.FAILED_TEST_ARTIFACTS}}
348348
- name: Upload failed tests' directories
349349
if: failure() && env.FAILED_TEST_ARTIFACTS != '' && matrix.vector.jobname == 'linux32'
350-
uses: actions/upload-artifact@v1
350+
uses: actions/upload-artifact@v1 # cannot be upgraded because Node.js Actions aren't supported in this container
351351
with:
352352
name: failed-tests-${{matrix.vector.jobname}}
353353
path: ${{env.FAILED_TEST_ARTIFACTS}}
@@ -361,7 +361,7 @@ jobs:
361361
group: static-analysis-${{ github.ref }}
362362
cancel-in-progress: ${{ needs.ci-config.outputs.skip_concurrent == 'yes' }}
363363
steps:
364-
- uses: actions/checkout@v3
364+
- uses: actions/checkout@v4
365365
- run: ci/install-dependencies.sh
366366
- run: ci/run-static-analysis.sh
367367
- run: ci/check-directional-formatting.bash
@@ -384,7 +384,7 @@ jobs:
384384
artifact: sparse-20.04
385385
- name: Install the current `sparse` package
386386
run: sudo dpkg -i sparse-20.04/sparse_*.deb
387-
- uses: actions/checkout@v3
387+
- uses: actions/checkout@v4
388388
- name: Install other dependencies
389389
run: ci/install-dependencies.sh
390390
- run: make sparse
@@ -399,6 +399,6 @@ jobs:
399399
jobname: Documentation
400400
runs-on: ubuntu-latest
401401
steps:
402-
- uses: actions/checkout@v3
402+
- uses: actions/checkout@v4
403403
- run: ci/install-dependencies.sh
404404
- run: ci/test-documentation.sh

Documentation/RelNotes/2.39.4.txt

+79
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
Git v2.39.4 Release Notes
2+
=========================
3+
4+
This addresses the security issues CVE-2024-32002, CVE-2024-32004,
5+
CVE-2024-32020 and CVE-2024-32021.
6+
7+
This release also backports fixes necessary to let the CI builds pass
8+
successfully.
9+
10+
Fixes since v2.39.3
11+
-------------------
12+
13+
* CVE-2024-32002:
14+
15+
Recursive clones on case-insensitive filesystems that support symbolic
16+
links are susceptible to case confusion that can be exploited to
17+
execute just-cloned code during the clone operation.
18+
19+
* CVE-2024-32004:
20+
21+
Repositories can be configured to execute arbitrary code during local
22+
clones. To address this, the ownership checks introduced in v2.30.3
23+
are now extended to cover cloning local repositories.
24+
25+
* CVE-2024-32020:
26+
27+
Local clones may end up hardlinking files into the target repository's
28+
object database when source and target repository reside on the same
29+
disk. If the source repository is owned by a different user, then
30+
those hardlinked files may be rewritten at any point in time by the
31+
untrusted user.
32+
33+
* CVE-2024-32021:
34+
35+
When cloning a local source repository that contains symlinks via the
36+
filesystem, Git may create hardlinks to arbitrary user-readable files
37+
on the same filesystem as the target repository in the objects/
38+
directory.
39+
40+
* CVE-2024-32465:
41+
42+
It is supposed to be safe to clone untrusted repositories, even those
43+
unpacked from zip archives or tarballs originating from untrusted
44+
sources, but Git can be tricked to run arbitrary code as part of the
45+
clone.
46+
47+
* Defense-in-depth: submodule: require the submodule path to contain
48+
directories only.
49+
50+
* Defense-in-depth: clone: when symbolic links collide with directories, keep
51+
the latter.
52+
53+
* Defense-in-depth: clone: prevent hooks from running during a clone.
54+
55+
* Defense-in-depth: core.hooksPath: add some protection while cloning.
56+
57+
* Defense-in-depth: fsck: warn about symlink pointing inside a gitdir.
58+
59+
* Various fix-ups on HTTP tests.
60+
61+
* Test update.
62+
63+
* HTTP Header redaction code has been adjusted for a newer version of
64+
cURL library that shows its traces differently from earlier
65+
versions.
66+
67+
* Fix was added to work around a regression in libcURL 8.7.0 (which has
68+
already been fixed in their tip of the tree).
69+
70+
* Replace macos-12 used at GitHub CI with macos-13.
71+
72+
* ci(linux-asan/linux-ubsan): let's save some time
73+
74+
* Tests with LSan from time to time seem to emit harmless message that makes
75+
our tests unnecessarily flakey; we work it around by filtering the
76+
uninteresting output.
77+
78+
* Update GitHub Actions jobs to avoid warnings against using deprecated
79+
version of Node.js.

Documentation/RelNotes/2.40.2.txt

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
Git v2.40.2 Release Notes
2+
=========================
3+
4+
This release merges up the fix that appears in v2.39.4 to address
5+
the security issues CVE-2024-32002, CVE-2024-32004, CVE-2024-32020,
6+
CVE-2024-32021 and CVE-2024-32465; see the release notes for that
7+
version for details.

Documentation/RelNotes/2.41.1.txt

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
Git v2.41.1 Release Notes
2+
=========================
3+
4+
This release merges up the fix that appears in v2.39.4 and v2.40.2
5+
to address the security issues CVE-2024-32002, CVE-2024-32004,
6+
CVE-2024-32020, CVE-2024-32021 and CVE-2024-32465; see the release
7+
notes for these versions for details.

Documentation/RelNotes/2.42.2.txt

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
Git v2.42.2 Release Notes
2+
=========================
3+
4+
This release merges up the fix that appears in v2.39.4, v2.40.2
5+
and v2.41.1 to address the security issues CVE-2024-32002,
6+
CVE-2024-32004, CVE-2024-32020, CVE-2024-32021 and CVE-2024-32465;
7+
see the release notes for these versions for details.

Documentation/RelNotes/2.43.4.txt

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
Git v2.43.4 Release Notes
2+
=========================
3+
4+
This release merges up the fix that appears in v2.39.4, v2.40.2,
5+
v2.41.1 and v2.42.2 to address the security issues CVE-2024-32002,
6+
CVE-2024-32004, CVE-2024-32020, CVE-2024-32021 and CVE-2024-32465;
7+
see the release notes for these versions for details.

Documentation/fsck-msgids.txt

+12
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,18 @@
164164
`nullSha1`::
165165
(WARN) Tree contains entries pointing to a null sha1.
166166

167+
`symlinkPointsToGitDir`::
168+
(WARN) Symbolic link points inside a gitdir.
169+
170+
`symlinkTargetBlob`::
171+
(ERROR) A non-blob found instead of a symbolic link's target.
172+
173+
`symlinkTargetLength`::
174+
(WARN) Symbolic link target longer than maximum path length.
175+
176+
`symlinkTargetMissing`::
177+
(ERROR) Unable to read symbolic link target's blob.
178+
167179
`treeNotSorted`::
168180
(ERROR) A tree is not properly sorted.
169181

Documentation/git-upload-pack.txt

+31
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,37 @@ ENVIRONMENT
5555
admins may need to configure some transports to allow this
5656
variable to be passed. See the discussion in linkgit:git[1].
5757

58+
`GIT_NO_LAZY_FETCH`::
59+
When cloning or fetching from a partial repository (i.e., one
60+
itself cloned with `--filter`), the server-side `upload-pack`
61+
may need to fetch extra objects from its upstream in order to
62+
complete the request. By default, `upload-pack` will refuse to
63+
perform such a lazy fetch, because `git fetch` may run arbitrary
64+
commands specified in configuration and hooks of the source
65+
repository (and `upload-pack` tries to be safe to run even in
66+
untrusted `.git` directories).
67+
+
68+
This is implemented by having `upload-pack` internally set the
69+
`GIT_NO_LAZY_FETCH` variable to `1`. If you want to override it
70+
(because you are fetching from a partial clone, and you are sure
71+
you trust it), you can explicitly set `GIT_NO_LAZY_FETCH` to
72+
`0`.
73+
74+
SECURITY
75+
--------
76+
77+
Most Git commands should not be run in an untrusted `.git` directory
78+
(see the section `SECURITY` in linkgit:git[1]). `upload-pack` tries to
79+
avoid any dangerous configuration options or hooks from the repository
80+
it's serving, making it safe to clone an untrusted directory and run
81+
commands on the resulting clone.
82+
83+
For an extra level of safety, you may be able to run `upload-pack` as an
84+
alternate user. The details will be platform dependent, but on many
85+
systems you can run:
86+
87+
git clone --no-local --upload-pack='sudo -u nobody git-upload-pack' ...
88+
5889
SEE ALSO
5990
--------
6091
linkgit:gitnamespaces[7]

Documentation/git.txt

+31
Original file line numberDiff line numberDiff line change
@@ -1052,6 +1052,37 @@ The index is also capable of storing multiple entries (called "stages")
10521052
for a given pathname. These stages are used to hold the various
10531053
unmerged version of a file when a merge is in progress.
10541054

1055+
SECURITY
1056+
--------
1057+
1058+
Some configuration options and hook files may cause Git to run arbitrary
1059+
shell commands. Because configuration and hooks are not copied using
1060+
`git clone`, it is generally safe to clone remote repositories with
1061+
untrusted content, inspect them with `git log`, and so on.
1062+
1063+
However, it is not safe to run Git commands in a `.git` directory (or
1064+
the working tree that surrounds it) when that `.git` directory itself
1065+
comes from an untrusted source. The commands in its config and hooks
1066+
are executed in the usual way.
1067+
1068+
By default, Git will refuse to run when the repository is owned by
1069+
someone other than the user running the command. See the entry for
1070+
`safe.directory` in linkgit:git-config[1]. While this can help protect
1071+
you in a multi-user environment, note that you can also acquire
1072+
untrusted repositories that are owned by you (for example, if you
1073+
extract a zip file or tarball from an untrusted source). In such cases,
1074+
you'd need to "sanitize" the untrusted repository first.
1075+
1076+
If you have an untrusted `.git` directory, you should first clone it
1077+
with `git clone --no-local` to obtain a clean copy. Git does restrict
1078+
the set of options and hooks that will be run by `upload-pack`, which
1079+
handles the server side of a clone or fetch, but beware that the
1080+
surface area for attack against `upload-pack` is large, so this does
1081+
carry some risk. The safest thing is to serve the repository as an
1082+
unprivileged user (either via linkgit:git-daemon[1], ssh, or using
1083+
other tools to change user ids). See the discussion in the `SECURITY`
1084+
section of linkgit:git-upload-pack[1].
1085+
10551086
FURTHER DOCUMENTATION
10561087
---------------------
10571088

GIT-VERSION-GEN

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#!/bin/sh
22

33
GVF=GIT-VERSION-FILE
4-
DEF_VER=v2.43.3
4+
DEF_VER=v2.43.4
55

66
LF='
77
'

INSTALL

+1-1
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ Issues of note:
139139
not need that functionality, use NO_CURL to build without
140140
it.
141141

142-
Git requires version "7.19.5" or later of "libcurl" to build
142+
Git requires version "7.21.3" or later of "libcurl" to build
143143
without NO_CURL. This version requirement may be bumped in
144144
the future.
145145

RelNotes

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
Documentation/RelNotes/2.43.3.txt
1+
Documentation/RelNotes/2.43.4.txt

0 commit comments

Comments
 (0)