update to 2.36.0
Release notes: https://github.com/git/git/raw/v2.36.0/Documentation/RelNotes/2.36.0.txt
This commit is contained in:
		
							parent
							
								
									59a5ed4cff
								
							
						
					
					
						commit
						dbec023603
					
				| @ -1,72 +0,0 @@ | ||||
| From e47363e5a8bdf5144059d664c45c0975243ef05b Mon Sep 17 00:00:00 2001 | ||||
| From: Derrick Stolee <derrickstolee@github.com> | ||||
| Date: Wed, 13 Apr 2022 15:32:29 +0000 | ||||
| Subject: [PATCH 1/3] t0033: add tests for safe.directory | ||||
| 
 | ||||
| It is difficult to change the ownership on a directory in our test | ||||
| suite, so insert a new GIT_TEST_ASSUME_DIFFERENT_OWNER environment | ||||
| variable to trick Git into thinking we are in a differently-owned | ||||
| directory. This allows us to test that the config is parsed correctly. | ||||
| 
 | ||||
| Signed-off-by: Derrick Stolee <derrickstolee@github.com> | ||||
| Signed-off-by: Junio C Hamano <gitster@pobox.com> | ||||
| ---
 | ||||
|  setup.c                   |  3 ++- | ||||
|  t/t0033-safe-directory.sh | 34 ++++++++++++++++++++++++++++++++++ | ||||
|  2 files changed, 36 insertions(+), 1 deletion(-) | ||||
|  create mode 100755 t/t0033-safe-directory.sh | ||||
| 
 | ||||
| diff --git a/setup.c b/setup.c
 | ||||
| index 95d5b00940..3c6ed17af9 100644
 | ||||
| --- a/setup.c
 | ||||
| +++ b/setup.c
 | ||||
| @@ -1053,7 +1053,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); | ||||
| diff --git a/t/t0033-safe-directory.sh b/t/t0033-safe-directory.sh
 | ||||
| new file mode 100755 | ||||
| index 0000000000..9380ff3d01
 | ||||
| --- /dev/null
 | ||||
| +++ b/t/t0033-safe-directory.sh
 | ||||
| @@ -0,0 +1,34 @@
 | ||||
| +#!/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 '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_done
 | ||||
| @ -1,48 +0,0 @@ | ||||
| From bb50ec3cc300eeff3aba7a2bea145aabdb477d31 Mon Sep 17 00:00:00 2001 | ||||
| From: Matheus Valadares <me@m28.io> | ||||
| Date: Wed, 13 Apr 2022 15:32:30 +0000 | ||||
| Subject: [PATCH 2/3] setup: fix safe.directory key not being checked | ||||
| 
 | ||||
| It seems that nothing is ever checking to make sure the safe directories | ||||
| in the configs actually have the key safe.directory, so some unrelated | ||||
| config that has a value with a certain directory would also make it a | ||||
| safe directory. | ||||
| 
 | ||||
| Signed-off-by: Matheus Valadares <me@m28.io> | ||||
| Signed-off-by: Derrick Stolee <derrickstolee@github.com> | ||||
| Signed-off-by: Junio C Hamano <gitster@pobox.com> | ||||
| ---
 | ||||
|  setup.c                   | 3 +++ | ||||
|  t/t0033-safe-directory.sh | 5 +++++ | ||||
|  2 files changed, 8 insertions(+) | ||||
| 
 | ||||
| diff --git a/setup.c b/setup.c
 | ||||
| index 3c6ed17af9..4b9f073617 100644
 | ||||
| --- a/setup.c
 | ||||
| +++ b/setup.c
 | ||||
| @@ -1034,6 +1034,9 @@ static int safe_directory_cb(const char *key, const char *value, void *d)
 | ||||
|  { | ||||
|  	struct safe_directory_data *data = d; | ||||
|   | ||||
| +	if (strcmp(key, "safe.directory"))
 | ||||
| +		return 0;
 | ||||
| +
 | ||||
|  	if (!value || !*value) | ||||
|  		data->is_safe = 0; | ||||
|  	else { | ||||
| diff --git a/t/t0033-safe-directory.sh b/t/t0033-safe-directory.sh
 | ||||
| index 9380ff3d01..6f33c0dfef 100755
 | ||||
| --- a/t/t0033-safe-directory.sh
 | ||||
| +++ b/t/t0033-safe-directory.sh
 | ||||
| @@ -21,6 +21,11 @@ test_expect_success 'safe.directory does not match' '
 | ||||
|  	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 | ||||
| @ -1,88 +0,0 @@ | ||||
| From 0f85c4a30b072a26d74af8bbf63cc8f6a5dfc1b8 Mon Sep 17 00:00:00 2001 | ||||
| From: Derrick Stolee <derrickstolee@github.com> | ||||
| Date: Wed, 13 Apr 2022 15:32:31 +0000 | ||||
| Subject: [PATCH 3/3] setup: opt-out of check with safe.directory=* | ||||
| 
 | ||||
| With the addition of the safe.directory in 8959555ce | ||||
| (setup_git_directory(): add an owner check for the top-level directory, | ||||
| 2022-03-02) released in v2.35.2, we are receiving feedback from a | ||||
| variety of users about the feature. | ||||
| 
 | ||||
| Some users have a very large list of shared repositories and find it | ||||
| cumbersome to add this config for every one of them. | ||||
| 
 | ||||
| In a more difficult case, certain workflows involve running Git commands | ||||
| within containers. The container boundary prevents any global or system | ||||
| config from communicating `safe.directory` values from the host into the | ||||
| container. Further, the container almost always runs as a different user | ||||
| than the owner of the directory in the host. | ||||
| 
 | ||||
| To simplify the reactions necessary for these users, extend the | ||||
| definition of the safe.directory config value to include a possible '*' | ||||
| value. This value implies that all directories are safe, providing a | ||||
| single setting to opt-out of this protection. | ||||
| 
 | ||||
| Note that an empty assignment of safe.directory clears all previous | ||||
| values, and this is already the case with the "if (!value || !*value)" | ||||
| condition. | ||||
| 
 | ||||
| Signed-off-by: Derrick Stolee <derrickstolee@github.com> | ||||
| Signed-off-by: Junio C Hamano <gitster@pobox.com> | ||||
| ---
 | ||||
|  Documentation/config/safe.txt |  7 +++++++ | ||||
|  setup.c                       |  6 ++++-- | ||||
|  t/t0033-safe-directory.sh     | 10 ++++++++++ | ||||
|  3 files changed, 21 insertions(+), 2 deletions(-) | ||||
| 
 | ||||
| diff --git a/Documentation/config/safe.txt b/Documentation/config/safe.txt
 | ||||
| index 63597b2df8..6d764fe0cc 100644
 | ||||
| --- a/Documentation/config/safe.txt
 | ||||
| +++ b/Documentation/config/safe.txt
 | ||||
| @@ -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.
 | ||||
| diff --git a/setup.c b/setup.c
 | ||||
| index 4b9f073617..aad9ace0af 100644
 | ||||
| --- a/setup.c
 | ||||
| +++ b/setup.c
 | ||||
| @@ -1037,9 +1037,11 @@ static int safe_directory_cb(const char *key, const char *value, void *d)
 | ||||
|  	if (strcmp(key, "safe.directory")) | ||||
|  		return 0; | ||||
|   | ||||
| -	if (!value || !*value)
 | ||||
| +	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) && | ||||
| diff --git a/t/t0033-safe-directory.sh b/t/t0033-safe-directory.sh
 | ||||
| index 6f33c0dfef..239d93f4d2 100755
 | ||||
| --- a/t/t0033-safe-directory.sh
 | ||||
| +++ b/t/t0033-safe-directory.sh
 | ||||
| @@ -36,4 +36,14 @@ test_expect_success 'safe.directory matches, but is reset' '
 | ||||
|  	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 | ||||
							
								
								
									
										12
									
								
								git.spec
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								git.spec
									
									
									
									
									
								
							| @ -77,14 +77,14 @@ | ||||
| %endif | ||||
| 
 | ||||
| # Define for release candidates | ||||
| %global rcrev   .rc2 | ||||
| #global rcrev   .rc0 | ||||
| 
 | ||||
| # Set path to the package-notes linker script | ||||
| %global _package_note_file  %{_builddir}/%{name}-%{version}%{?rcrev}/.package_note-%{name}-%{version}-%{release}.%{_arch}.ld | ||||
| 
 | ||||
| Name:           git | ||||
| Version:        2.36.0 | ||||
| Release:        0.3%{?rcrev}%{?dist} | ||||
| Release:        1%{?rcrev}%{?dist} | ||||
| Summary:        Fast Version Control System | ||||
| License:        GPLv2 | ||||
| URL:            https://git-scm.com/ | ||||
| @ -116,11 +116,6 @@ Source99:       print-failed-test-output | ||||
| # https://bugzilla.redhat.com/490602 | ||||
| Patch0:         git-cvsimport-Ignore-cvsps-2.2b1-Branches-output.patch | ||||
| 
 | ||||
| # Usability improvements on top of CVE-2022-24765 | ||||
| Patch1:         0001-t0033-add-tests-for-safe.directory.patch | ||||
| Patch2:         0002-setup-fix-safe.directory-key-not-being-checked.patch | ||||
| Patch3:         0003-setup-opt-out-of-check-with-safe.directory.patch | ||||
| 
 | ||||
| %if %{with docs} | ||||
| # pod2man is needed to build Git.3pm | ||||
| BuildRequires:  %{_bindir}/pod2man | ||||
| @ -1041,6 +1036,9 @@ rmdir --ignore-fail-on-non-empty "$testdir" | ||||
| %{?with_docs:%{_pkgdocdir}/git-svn.html} | ||||
| 
 | ||||
| %changelog | ||||
| * Mon Apr 18 2022 Todd Zullinger <tmz@pobox.com> - 2.36.0-1 | ||||
| - update to 2.36.0 | ||||
| 
 | ||||
| * Thu Apr 14 2022 Todd Zullinger <tmz@pobox.com> - 2.36.0-0.3.rc2 | ||||
| - usability improvements on top of CVE-2022-24765 | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										4
									
								
								sources
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								sources
									
									
									
									
									
								
							| @ -1,2 +1,2 @@ | ||||
| SHA512 (git-2.36.0.rc2.tar.xz) = dfdd49fc7d25c6e2c4291afd5e9c234f4180226d9219cb6e70328dfdeb585a982a2f3b375ede578570825fff9f68ea126b3342512644906dc4333f9f953fe4a3 | ||||
| SHA512 (git-2.36.0.rc2.tar.sign) = 8b7abfabd47f2be269717e6eb832bcdecf502efc11caa8533a3851e7fbd21e41644322d0784e73efc4dfd5bf4bc1b1094f8dedbd72758e7522b12d045507618c | ||||
| SHA512 (git-2.36.0.tar.xz) = dce0d7dbe684af070271830a01bf1b9cc289182f5106f6e3303b1b3a0d5dc74bebf6ac0174373db05a28f5acc62acb095bc9385dabeeecc1d6e8567dce29b766 | ||||
| SHA512 (git-2.36.0.tar.sign) = 51343a6443a95db4e896687987876d5259fe8e52fc14bbaa87314f7e3be3e36655d087c6453ca8208face5b28db10b503e5e52487cfa3f3664d2b4a761561815 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user