Avoid an infinite loop by ensuring that the amount of bytes read is greater

than 0 in MDXFileChunk when calculating the checksum

This edgecase can be triggered if the file is truncated while the checksum
is being calculated (i.e. the EOF is reached)

Differential Revision: https://reviews.freebsd.org/D2351 (patch by darius)
PR: 196694
Reviewed by: delphij, ngie
Submitted by: Daniel O'Connor <darius@dons.net.au>
Sponsored by: EMC / Isilon Storage Division
This commit is contained in:
ngie 2015-04-24 11:03:47 +00:00
parent b4f9c4540d
commit 2aab358f3c

View File

@ -74,7 +74,7 @@ MDXFileChunk(const char *filename, char *buf, off_t ofs, off_t len)
i = read(f, buffer, sizeof(buffer));
else
i = read(f, buffer, n);
if (i < 0)
if (i <= 0)
break;
MDXUpdate(&ctx, buffer, i);
n -= i;