Merge branch 'jc/maint-fix-unpack-zlib-check' into maint
* jc/maint-fix-unpack-zlib-check: Fix incorrect error check while reading deflated pack datamaint
commit
47a876a088
|
@ -1357,8 +1357,6 @@ unsigned long get_size_from_delta(struct packed_git *p,
|
||||||
in = use_pack(p, w_curs, curpos, &stream.avail_in);
|
in = use_pack(p, w_curs, curpos, &stream.avail_in);
|
||||||
stream.next_in = in;
|
stream.next_in = in;
|
||||||
st = git_inflate(&stream, Z_FINISH);
|
st = git_inflate(&stream, Z_FINISH);
|
||||||
if (st == Z_BUF_ERROR && (stream.avail_in || !stream.avail_out))
|
|
||||||
break;
|
|
||||||
curpos += stream.next_in - in;
|
curpos += stream.next_in - in;
|
||||||
} while ((st == Z_OK || st == Z_BUF_ERROR) &&
|
} while ((st == Z_OK || st == Z_BUF_ERROR) &&
|
||||||
stream.total_out < sizeof(delta_head));
|
stream.total_out < sizeof(delta_head));
|
||||||
|
@ -1589,15 +1587,15 @@ static void *unpack_compressed_entry(struct packed_git *p,
|
||||||
buffer[size] = 0;
|
buffer[size] = 0;
|
||||||
memset(&stream, 0, sizeof(stream));
|
memset(&stream, 0, sizeof(stream));
|
||||||
stream.next_out = buffer;
|
stream.next_out = buffer;
|
||||||
stream.avail_out = size;
|
stream.avail_out = size + 1;
|
||||||
|
|
||||||
git_inflate_init(&stream);
|
git_inflate_init(&stream);
|
||||||
do {
|
do {
|
||||||
in = use_pack(p, w_curs, curpos, &stream.avail_in);
|
in = use_pack(p, w_curs, curpos, &stream.avail_in);
|
||||||
stream.next_in = in;
|
stream.next_in = in;
|
||||||
st = git_inflate(&stream, Z_FINISH);
|
st = git_inflate(&stream, Z_FINISH);
|
||||||
if (st == Z_BUF_ERROR && (stream.avail_in || !stream.avail_out))
|
if (!stream.avail_out)
|
||||||
break;
|
break; /* the payload is larger than it should be */
|
||||||
curpos += stream.next_in - in;
|
curpos += stream.next_in - in;
|
||||||
} while (st == Z_OK || st == Z_BUF_ERROR);
|
} while (st == Z_OK || st == Z_BUF_ERROR);
|
||||||
git_inflate_end(&stream);
|
git_inflate_end(&stream);
|
||||||
|
|
Loading…
Reference in New Issue