mirror of https://git.tukaani.org/xz.git
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:
parent
c2e29f06a7
commit
a015cd1f90
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue