aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLasse Collin <lasse.collin@tukaani.org>2017-05-23 18:34:43 +0300
committerLasse Collin <lasse.collin@tukaani.org>2017-05-23 18:34:43 +0300
commita015cd1f90116e655be4eaf4aad42c4c911c2807 (patch)
tree64cad846034d2c6b3fdae0df61dabc3536a62a3b /src
parentDocs: Add doc/examples/11_file_info.c. (diff)
downloadxz-a015cd1f90116e655be4eaf4aad42c4c911c2807.tar.xz
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.
Diffstat (limited to 'src')
-rw-r--r--src/xz/list.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/xz/list.c b/src/xz/list.c
index c297d2e3..bf462957 100644
--- a/src/xz/list.c
+++ b/src/xz/list.c
@@ -109,7 +109,7 @@ static struct {
uint32_t checks;
uint32_t min_version;
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.
@@ -470,7 +470,11 @@ static void
get_check_names(char buf[CHECKS_STR_SIZE],
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;
size_t left = CHECKS_STR_SIZE;