1
0
Fork 0
mirror of https://git.tukaani.org/xz.git synced 2024-04-04 12:36:23 +02:00

xz: Fix "xz --list --robot missing_or_bad_file.xz".

It ended up printing an uninitialized char-array when trying to
print the check names (column 7) on the "totals" line.

This also changes the column 12 (minimum xz version) to
50000002 (xz 5.0.0) instead of 0 when there are no valid
input files.

Thanks to kidmin for the bug report.
This commit is contained in:
Lasse Collin 2017-05-23 18:34:43 +03:00
parent c2e29f06a7
commit a015cd1f90

View file

@ -109,7 +109,7 @@ static struct {
uint32_t checks; uint32_t checks;
uint32_t min_version; uint32_t min_version;
bool all_have_sizes; bool all_have_sizes;
} totals = { 0, 0, 0, 0, 0, 0, 0, 0, 0, true }; } totals = { 0, 0, 0, 0, 0, 0, 0, 0, 50000002, true };
/// Convert XZ Utils version number to a string. /// Convert XZ Utils version number to a string.
@ -470,7 +470,11 @@ static void
get_check_names(char buf[CHECKS_STR_SIZE], get_check_names(char buf[CHECKS_STR_SIZE],
uint32_t checks, bool space_after_comma) uint32_t checks, bool space_after_comma)
{ {
assert(checks != 0); // If we get called when there are no Checks to print, set checks
// to 1 so that we print "None". This can happen in the robot mode
// when printing the totals line if there are no valid input files.
if (checks == 0)
checks = 1;
char *pos = buf; char *pos = buf;
size_t left = CHECKS_STR_SIZE; size_t left = CHECKS_STR_SIZE;