Skip to content
Snippets Groups Projects
Commit d011a377 authored by Chris Aniszczyk's avatar Chris Aniszczyk Committed by Code Review
Browse files

Merge "Fix handling of corruption for truncated objects"

parents 28e42cb4 c10e1341
No related branches found
No related tags found
No related merge requests found
......@@ -114,8 +114,13 @@ private UnpackedObjectLoader(final byte[] compressed, final AnyObjectId id)
int avail = 0;
while (!inflater.finished() && avail < hdr.length)
try {
avail += inflater.inflate(hdr, avail, hdr.length
- avail);
int uncompressed = inflater.inflate(hdr, avail,
hdr.length - avail);
if (uncompressed == 0) {
throw new CorruptObjectException(id,
"bad stream, corrupt header");
}
avail += uncompressed;
} catch (DataFormatException dfe) {
final CorruptObjectException coe;
coe = new CorruptObjectException(id, "bad stream");
......@@ -172,8 +177,14 @@ private UnpackedObjectLoader(final byte[] compressed, final AnyObjectId id)
private void decompress(final AnyObjectId id, final Inflater inf, int p)
throws CorruptObjectException {
try {
while (!inf.finished())
p += inf.inflate(bytes, p, objectSize - p);
while (!inf.finished()) {
int uncompressed = inf.inflate(bytes, p, objectSize - p);
p += uncompressed;
if (uncompressed == 0 && !inf.finished()) {
throw new CorruptObjectException(id,
"bad stream, corrupt header");
}
}
} catch (DataFormatException dfe) {
final CorruptObjectException coe;
coe = new CorruptObjectException(id, "bad stream");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment