diff options
author | Junio C Hamano <gitster@pobox.com> | 2009-10-26 04:35:59 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2009-10-26 04:35:59 +0300 |
commit | 47a876a088d2611d5295b0779bd9cf2465848ecd (patch) | |
tree | 9f9920c4e8bc4ebacaee42917d66f0e81e197899 | |
parent | 071b489682f68c5e205ed3af2a7fe997f1d7c467 (diff) | |
parent | 39eea7bdd943a103deadfd4c4fd204bbbf111219 (diff) |
Merge branch 'jc/maint-fix-unpack-zlib-check' into maint
* jc/maint-fix-unpack-zlib-check:
Fix incorrect error check while reading deflated pack data
-rw-r--r-- | sha1_file.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/sha1_file.c b/sha1_file.c index 4cc8939e4b..63981fb3fd 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -1357,8 +1357,6 @@ unsigned long get_size_from_delta(struct packed_git *p, in = use_pack(p, w_curs, curpos, &stream.avail_in); stream.next_in = in; st = git_inflate(&stream, Z_FINISH); - if (st == Z_BUF_ERROR && (stream.avail_in || !stream.avail_out)) - break; curpos += stream.next_in - in; } while ((st == Z_OK || st == Z_BUF_ERROR) && stream.total_out < sizeof(delta_head)); @@ -1589,15 +1587,15 @@ static void *unpack_compressed_entry(struct packed_git *p, buffer[size] = 0; memset(&stream, 0, sizeof(stream)); stream.next_out = buffer; - stream.avail_out = size; + stream.avail_out = size + 1; git_inflate_init(&stream); do { in = use_pack(p, w_curs, curpos, &stream.avail_in); stream.next_in = in; st = git_inflate(&stream, Z_FINISH); - if (st == Z_BUF_ERROR && (stream.avail_in || !stream.avail_out)) - break; + if (!stream.avail_out) + break; /* the payload is larger than it should be */ curpos += stream.next_in - in; } while (st == Z_OK || st == Z_BUF_ERROR); git_inflate_end(&stream); |