Fix Adam Borowski's patch to work on inflated blocks.
diff --git a/src/main.c b/src/main.c
index 073e28b..9ae05da 100644
--- a/src/main.c
+++ b/src/main.c
@@ -207,7 +207,7 @@ static int process(FILE * input_des, FILE * output_des, int mode, int block_size
return 1;
}
- u8 * buffer = malloc(block_size + block_size / 50 + 32);
+ u8 * buffer = malloc(bz3_bound(block_size));
if (!buffer) {
fprintf(stderr, "Failed to allocate memory.\n");
@@ -244,7 +244,7 @@ static int process(FILE * input_des, FILE * output_des, int mode, int block_size
new_size = read_neutral_s32(byteswap_buf);
xread_noeof(&byteswap_buf, 1, 4, input_des);
old_size = read_neutral_s32(byteswap_buf);
- if (old_size > block_size || new_size > block_size + 31) {
+ if (old_size > bz3_bound(block_size) || new_size > bz3_bound(block_size)) {
fprintf(stderr, "Failed to decode a block: Inconsistent headers.\n");
return 1;
}
@@ -265,7 +265,7 @@ static int process(FILE * input_des, FILE * output_des, int mode, int block_size
new_size = read_neutral_s32(byteswap_buf);
xread_noeof(&byteswap_buf, 1, 4, input_des);
old_size = read_neutral_s32(byteswap_buf);
- if (old_size > block_size || new_size > block_size + 31) {
+ if (old_size > bz3_bound(block_size) || new_size > bz3_bound(block_size)) {
fprintf(stderr, "Failed to decode a block: Inconsistent headers.\n");
return 1;
}
@@ -343,7 +343,7 @@ static int process(FILE * input_des, FILE * output_des, int mode, int block_size
sizes[i] = read_neutral_s32(byteswap_buf);
xread_noeof(&byteswap_buf, 1, 4, input_des);
old_sizes[i] = read_neutral_s32(byteswap_buf);
- if (old_sizes[i] > block_size || sizes[i] > block_size + 31) {
+ if (old_sizes[i] > bz3_bound(block_size) || sizes[i] > bz3_bound(block_size)) {
fprintf(stderr, "Failed to decode a block: Inconsistent headers.\n");
return 1;
}
@@ -371,7 +371,7 @@ static int process(FILE * input_des, FILE * output_des, int mode, int block_size
sizes[i] = read_neutral_s32(byteswap_buf);
xread_noeof(&byteswap_buf, 1, 4, input_des);
old_sizes[i] = read_neutral_s32(byteswap_buf);
- if (old_sizes[i] > block_size || sizes[i] > block_size + 31) {
+ if (old_sizes[i] > bz3_bound(block_size) || sizes[i] > bz3_bound(block_size)) {
fprintf(stderr, "Failed to decode a block: Inconsistent headers.\n");
return 1;
}
