diff options
| author | Junio C Hamano <gitster@pobox.com> | 2020-04-22 13:42:44 -0700 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2020-04-22 13:42:44 -0700 |
| commit | 5ee5788af680ebc20b138f40fb0bfd79494ba95c (patch) | |
| tree | 562784f7cd50ff5a3d11a0d44372c71724a59976 /upload-pack.c | |
| parent | dfe48154b16e35ea01795aa94c7e8686f084e2c3 (diff) | |
| parent | cacae4329fa4779127f4944e7807512e7b9e8cac (diff) | |
| download | git-5ee5788af680ebc20b138f40fb0bfd79494ba95c.tar.gz | |
Merge branch 'jk/harden-protocol-v2-delim-handling'
The server-end of the v2 protocol to serve "git clone" and "git
fetch" was not prepared to see a delim packets at unexpected
places, which led to a crash.
* jk/harden-protocol-v2-delim-handling:
test-lib-functions: simplify packetize() stdin code
upload-pack: handle unexpected delim packets
test-lib-functions: make packetize() more efficient
Diffstat (limited to 'upload-pack.c')
| -rw-r--r-- | upload-pack.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/upload-pack.c b/upload-pack.c index c53249cac1..902d0ad5e1 100644 --- a/upload-pack.c +++ b/upload-pack.c @@ -1252,7 +1252,7 @@ static void process_args(struct packet_reader *request, struct upload_pack_data *data, struct object_array *want_obj) { - while (packet_reader_read(request) != PACKET_READ_FLUSH) { + while (packet_reader_read(request) == PACKET_READ_NORMAL) { const char *arg = request->line; const char *p; @@ -1321,6 +1321,9 @@ static void process_args(struct packet_reader *request, /* ignore unknown lines maybe? */ die("unexpected line: '%s'", arg); } + + if (request->status != PACKET_READ_FLUSH) + die(_("expected flush after fetch arguments")); } static int process_haves(struct oid_array *haves, struct oid_array *common, |
