1 Git v2.30.6 Release Notes
2 =========================
4 This release addresses the security issues CVE-2022-39253 and
11 When relying on the `--local` clone optimization, Git dereferences
12 symbolic links in the source repository before creating hardlinks
13 (or copies) of the dereferenced link in the destination repository.
14 This can lead to surprising behavior where arbitrary files are
15 present in a repository's `$GIT_DIR` when cloning from a malicious
18 Git will no longer dereference symbolic links via the `--local`
19 clone mechanism, and will instead refuse to clone repositories that
20 have symbolic links present in the `$GIT_DIR/objects` directory.
22 Additionally, the value of `protocol.file.allow` is changed to be
26 An overly-long command string given to `git shell` can result in
27 overflow in `split_cmdline()`, leading to arbitrary heap writes and
28 remote code execution when `git shell` is exposed and the directory
29 `$HOME/git-shell-commands` exists.
31 `git shell` is taught to refuse interactive commands that are
32 longer than 4MiB in size. `split_cmdline()` is hardened to reject
33 inputs larger than 2GiB.
35 Credit for finding CVE-2022-39253 goes to Cory Snider of Mirantis. The
36 fix was authored by Taylor Blau, with help from Johannes Schindelin.
38 Credit for finding CVE-2022-39260 goes to Kevin Backhouse of GitHub.
39 The fix was authored by Kevin Backhouse, Jeff King, and Taylor Blau.
43 shell: add basic tests
44 shell: limit size of interactive commands
47 alias.c: reject too-long cmdline strings in split_cmdline()
50 builtin/clone.c: disallow `--local` clones with symlinks
51 t/lib-submodule-update.sh: allow local submodules
52 t/t1NNN: allow local submodules
53 t/2NNNN: allow local submodules
54 t/t3NNN: allow local submodules
55 t/t4NNN: allow local submodules
56 t/t5NNN: allow local submodules
57 t/t6NNN: allow local submodules
58 t/t7NNN: allow local submodules
59 t/t9NNN: allow local submodules
60 transport: make `protocol.file.allow` be "user" by default