Pass some git environment variables to the test-receive hook

Since git 2.11, git has stored the proposed push in a "quarantine
area" until it is accepted by the pre-receive hook, and passed
extra environment variables to the pre-receive hook so that it can
read objects from the quarantine area.

This fixes untrusted push on modern git versions.

Signed-off-by: Simon McVittie <smcv@debian.org>
master
Simon McVittie 2017-10-01 13:16:03 +01:00
parent cf7df018cc
commit 6fb43c29f6
1 changed files with 2 additions and 0 deletions

View File

@ -52,6 +52,8 @@ sub gen_wrapper () {
HTTP_COOKIE REMOTE_USER HTTPS REDIRECT_STATUS HTTP_COOKIE REMOTE_USER HTTPS REDIRECT_STATUS
HTTP_HOST SERVER_PORT HTTPS HTTP_ACCEPT HTTP_HOST SERVER_PORT HTTPS HTTP_ACCEPT
REDIRECT_URL} if $config{cgi}; REDIRECT_URL} if $config{cgi};
push @envsave, qw{GIT_OBJECT_DIRECTORY GIT_QUARANTINE_PATH
GIT_ALTERNATE_OBJECT_DIRECTORIES} if $config{test_receive};
my $envsave=""; my $envsave="";
foreach my $var (@envsave) { foreach my $var (@envsave) {
$envsave.=<<"EOF"; $envsave.=<<"EOF";