Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.kernel.org/pub/scm/git/git.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2018-09-10 20:29:16 +0300
committerJunio C Hamano <gitster@pobox.com>2018-09-10 20:35:42 +0300
commitfe468efff533c3c92c174ae4706532c1521c150c (patch)
treec5ffc1d319f4c13843c6ed398d9f12724cfcd072
parentc05048d43925ab8edcb36663752c2b4541911231 (diff)
parent574c513e8dda5598e9e08e8ca2a048bf120a5709 (diff)
Merge branch 'mk/http-backend-content-length'
The earlier attempt barfed when given a CONTENT_LENGTH that is set to an empty string. RFC 3875 is fairly clear that in this case we should not read any message body, but we've been reading through to the EOF in previous versions (which did not even pay attention to the environment variable), so keep that behaviour for now in this late update. * mk/http-backend-content-length: http-backend: allow empty CONTENT_LENGTH
-rw-r--r--http-backend.c2
-rwxr-xr-xt/t5562-http-backend-content-length.sh11
2 files changed, 12 insertions, 1 deletions
diff --git a/http-backend.c b/http-backend.c
index 88c38c834b..458642ef72 100644
--- a/http-backend.c
+++ b/http-backend.c
@@ -353,7 +353,7 @@ static ssize_t get_content_length(void)
ssize_t val = -1;
const char *str = getenv("CONTENT_LENGTH");
- if (str && !git_parse_ssize_t(str, &val))
+ if (str && *str && !git_parse_ssize_t(str, &val))
die("failed to parse CONTENT_LENGTH: %s", str);
return val;
}
diff --git a/t/t5562-http-backend-content-length.sh b/t/t5562-http-backend-content-length.sh
index 43570ce120..f94d01f69e 100755
--- a/t/t5562-http-backend-content-length.sh
+++ b/t/t5562-http-backend-content-length.sh
@@ -153,4 +153,15 @@ test_expect_success 'CONTENT_LENGTH overflow ssite_t' '
grep "fatal:.*CONTENT_LENGTH" err
'
+test_expect_success 'empty CONTENT_LENGTH' '
+ env \
+ QUERY_STRING=/repo.git/HEAD \
+ PATH_TRANSLATED="$PWD"/.git/HEAD \
+ GIT_HTTP_EXPORT_ALL=TRUE \
+ REQUEST_METHOD=GET \
+ CONTENT_LENGTH="" \
+ git http-backend <empty_body >act.out 2>act.err &&
+ verify_http_result "200 OK"
+'
+
test_done