gunzip was incorrectly reporting a failed crc and length (discovered by
Chang, Shu-Hao). The bitbuffer needs to be unwound after decompression, as it was eating into the crc/size field.
This commit is contained in:
parent
8a35c9a557
commit
38288bbf4c
@ -875,6 +875,14 @@ static int inflate(void)
|
|||||||
}
|
}
|
||||||
} while (!e);
|
} while (!e);
|
||||||
|
|
||||||
|
/* Undo too much lookahead. The next read will be byte aligned so we
|
||||||
|
* can discard unused bits in the last meaningful byte.
|
||||||
|
*/
|
||||||
|
while (bk >= 8) {
|
||||||
|
bk -= 8;
|
||||||
|
ungetc((bb << bk), in_file);
|
||||||
|
}
|
||||||
|
|
||||||
/* flush out window */
|
/* flush out window */
|
||||||
flush_window();
|
flush_window();
|
||||||
|
|
||||||
|
@ -875,6 +875,14 @@ static int inflate(void)
|
|||||||
}
|
}
|
||||||
} while (!e);
|
} while (!e);
|
||||||
|
|
||||||
|
/* Undo too much lookahead. The next read will be byte aligned so we
|
||||||
|
* can discard unused bits in the last meaningful byte.
|
||||||
|
*/
|
||||||
|
while (bk >= 8) {
|
||||||
|
bk -= 8;
|
||||||
|
ungetc((bb << bk), in_file);
|
||||||
|
}
|
||||||
|
|
||||||
/* flush out window */
|
/* flush out window */
|
||||||
flush_window();
|
flush_window();
|
||||||
|
|
||||||
|
@ -875,6 +875,14 @@ static int inflate(void)
|
|||||||
}
|
}
|
||||||
} while (!e);
|
} while (!e);
|
||||||
|
|
||||||
|
/* Undo too much lookahead. The next read will be byte aligned so we
|
||||||
|
* can discard unused bits in the last meaningful byte.
|
||||||
|
*/
|
||||||
|
while (bk >= 8) {
|
||||||
|
bk -= 8;
|
||||||
|
ungetc((bb << bk), in_file);
|
||||||
|
}
|
||||||
|
|
||||||
/* flush out window */
|
/* flush out window */
|
||||||
flush_window();
|
flush_window();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user