Skip to content

Commit

Permalink
Make sure that we don't compute a block size larger than MAX_BLOCK_SIZE.
Browse files Browse the repository at this point in the history
  • Loading branch information
Wayne Davison committed Jan 17, 2005
1 parent 54281fe commit eae7165
Showing 1 changed file with 13 additions and 10 deletions.
23 changes: 13 additions & 10 deletions generator.c
Original file line number Diff line number Diff line change
Expand Up @@ -146,17 +146,20 @@ static void sum_sizes_sqroot(struct sum_struct *sum, uint64 len)
else {
int32 c;
uint64 l;
for (c = 1, l = len; l >>= 2; c <<= 1) {
assert(c > 0);
int cnt;
for (c = 1, l = len, cnt = 0; l >>= 2; c <<= 1, cnt++) {}
if (cnt >= 31 || c >= MAX_BLOCK_SIZE)
blength = MAX_BLOCK_SIZE;
else {
blength = 0;
do {
blength |= c;
if (len < (uint64)blength * blength)
blength &= ~c;
c >>= 1;
} while (c >= 8); /* round to multiple of 8 */
blength = MAX(blength, BLOCK_SIZE);
}
blength = 0;
do {
blength |= c;
if (len < (uint64)blength * blength)
blength &= ~c;
c >>= 1;
} while (c >= 8); /* round to multiple of 8 */
blength = MAX(blength, BLOCK_SIZE);
}

if (protocol_version < 27) {
Expand Down

0 comments on commit eae7165

Please sign in to comment.