Skip to content

Commit fe468ef

Browse files
committed
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
2 parents c05048d + 574c513 commit fe468ef

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

http-backend.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -353,7 +353,7 @@ static ssize_t get_content_length(void)
353353
ssize_t val = -1;
354354
const char *str = getenv("CONTENT_LENGTH");
355355

356-
if (str && !git_parse_ssize_t(str, &val))
356+
if (str && *str && !git_parse_ssize_t(str, &val))
357357
die("failed to parse CONTENT_LENGTH: %s", str);
358358
return val;
359359
}

t/t5562-http-backend-content-length.sh

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,4 +153,15 @@ test_expect_success 'CONTENT_LENGTH overflow ssite_t' '
153153
grep "fatal:.*CONTENT_LENGTH" err
154154
'
155155

156+
test_expect_success 'empty CONTENT_LENGTH' '
157+
env \
158+
QUERY_STRING=/repo.git/HEAD \
159+
PATH_TRANSLATED="$PWD"/.git/HEAD \
160+
GIT_HTTP_EXPORT_ALL=TRUE \
161+
REQUEST_METHOD=GET \
162+
CONTENT_LENGTH="" \
163+
git http-backend <empty_body >act.out 2>act.err &&
164+
verify_http_result "200 OK"
165+
'
166+
156167
test_done

0 commit comments

Comments
 (0)