Skip to content

Commit

Permalink
Git 2.35.3
Browse files Browse the repository at this point in the history
Signed-off-by: Junio C Hamano <[email protected]>
  • Loading branch information
gitster committed Apr 13, 2022
2 parents 53ef17d + 2f0dde7 commit d516b2d
Show file tree
Hide file tree
Showing 11 changed files with 108 additions and 5 deletions.
21 changes: 21 additions & 0 deletions Documentation/RelNotes/2.30.4.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
Git v2.30.4 Release Notes
=========================

This release contains minor fix-ups for the changes that went into
Git 2.30.3, which was made to address CVE-2022-24765.

* The code that was meant to parse the new `safe.directory`
configuration variable was not checking what configuration
variable was being fed to it, which has been corrected.

* '*' can be used as the value for the `safe.directory` variable to
signal that the user considers that any directory is safe.



Derrick Stolee (2):
t0033: add tests for safe.directory
setup: opt-out of check with safe.directory=*

Matheus Valadares (1):
setup: fix safe.directory key not being checked
4 changes: 4 additions & 0 deletions Documentation/RelNotes/2.31.3.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Git Documentation/RelNotes/2.31.3.txt Release Notes
=========================

This release merges up the fixes that appear in v2.31.3.

This comment has been minimized.

Copy link
@nedbat

nedbat Apr 14, 2022

Shouldn't this say "that appear in v2.30.4"? Similarly for the other release notes.

This comment has been minimized.

Copy link
@dscho

dscho Apr 19, 2022

Member

@nedbat the Git community welcomes your contribution on the Git mailing list, not here. See https://git-scm.com/community for details.

4 changes: 4 additions & 0 deletions Documentation/RelNotes/2.32.2.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Git Documentation/RelNotes/2.32.2.txt Release Notes
=========================

This release merges up the fixes that appear in v2.32.2.
4 changes: 4 additions & 0 deletions Documentation/RelNotes/2.33.3.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Git Documentation/RelNotes/2.33.3.txt Release Notes
=========================

This release merges up the fixes that appear in v2.33.3.
4 changes: 4 additions & 0 deletions Documentation/RelNotes/2.34.3.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Git Documentation/RelNotes/2.34.3.txt Release Notes
=========================

This release merges up the fixes that appear in v2.34.3.
4 changes: 4 additions & 0 deletions Documentation/RelNotes/2.35.3.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Git Documentation/RelNotes/2.35.3.txt Release Notes
=========================

This release merges up the fixes that appear in v2.35.3.
7 changes: 7 additions & 0 deletions Documentation/config/safe.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,10 @@ line option `-c safe.directory=<path>`.
The value of this setting is interpolated, i.e. `~/<path>` expands to a
path relative to the home directory and `%(prefix)/<path>` expands to a
path relative to Git's (runtime) prefix.
+
To completely opt-out of this security check, set `safe.directory` to the
string `*`. This will allow all repositories to be treated as if their
directory was listed in the `safe.directory` list. If `safe.directory=*`
is set in system config and you want to re-enable this protection, then
initialize your list with an empty value before listing the repositories
that you deem safe.
2 changes: 1 addition & 1 deletion GIT-VERSION-GEN
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/bin/sh

GVF=GIT-VERSION-FILE
DEF_VER=v2.35.2
DEF_VER=v2.35.3

LF='
'
Expand Down
2 changes: 1 addition & 1 deletion RelNotes
12 changes: 9 additions & 3 deletions setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -1099,9 +1099,14 @@ static int safe_directory_cb(const char *key, const char *value, void *d)
{
struct safe_directory_data *data = d;

if (!value || !*value)
if (strcmp(key, "safe.directory"))
return 0;

if (!value || !*value) {
data->is_safe = 0;
else {
} else if (!strcmp(value, "*")) {
data->is_safe = 1;
} else {
const char *interpolated = NULL;

if (!git_config_pathname(&interpolated, key, value) &&
Expand All @@ -1118,7 +1123,8 @@ static int ensure_valid_ownership(const char *path)
{
struct safe_directory_data data = { .path = path };

if (is_path_owned_by_current_user(path))
if (!git_env_bool("GIT_TEST_ASSUME_DIFFERENT_OWNER", 0) &&
is_path_owned_by_current_user(path))
return 1;

read_very_early_config(safe_directory_cb, &data);
Expand Down
49 changes: 49 additions & 0 deletions t/t0033-safe-directory.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
#!/bin/sh

test_description='verify safe.directory checks'

. ./test-lib.sh

GIT_TEST_ASSUME_DIFFERENT_OWNER=1
export GIT_TEST_ASSUME_DIFFERENT_OWNER

expect_rejected_dir () {
test_must_fail git status 2>err &&
grep "safe.directory" err
}

test_expect_success 'safe.directory is not set' '
expect_rejected_dir
'

test_expect_success 'safe.directory does not match' '
git config --global safe.directory bogus &&
expect_rejected_dir
'

test_expect_success 'path exist as different key' '
git config --global foo.bar "$(pwd)" &&
expect_rejected_dir
'

test_expect_success 'safe.directory matches' '
git config --global --add safe.directory "$(pwd)" &&
git status
'

test_expect_success 'safe.directory matches, but is reset' '
git config --global --add safe.directory "" &&
expect_rejected_dir
'

test_expect_success 'safe.directory=*' '
git config --global --add safe.directory "*" &&
git status
'

test_expect_success 'safe.directory=*, but is reset' '
git config --global --add safe.directory "" &&
expect_rejected_dir
'

test_done

0 comments on commit d516b2d

Please sign in to comment.