Commit 7e7bb6c2 for xz

commit 7e7bb6c21cf9c78f95a5049242fa35aebce38ea4
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   Tue May 26 19:30:29 2026 +0300

    xz: Use tuklib_mbstr_nonprint in a few more places

    Reported-by: GitHub user curious-rabbit

diff --git a/src/xz/args.c b/src/xz/args.c
index c32ee5c1..bc7a5e8b 100644
--- a/src/xz/args.c
+++ b/src/xz/args.c
@@ -75,7 +75,8 @@ parse_block_list(const char *str_const)

 	// It must be non-empty and not begin with a comma.
 	if (str[0] == '\0' || str[0] == ',')
-		message_fatal(_("%s: Invalid argument to --block-list"), str);
+		message_fatal(_("%s: Invalid argument to --block-list"),
+				tuklib_mask_nonprint(str));

 	// Count the number of comma-separated strings.
 	size_t count = 1;
@@ -86,7 +87,7 @@ parse_block_list(const char *str_const)
 	// Prevent an unlikely integer overflow.
 	if (count > SIZE_MAX / sizeof(block_list_entry) - 1)
 		message_fatal(_("%s: Too many arguments to --block-list"),
-				str);
+				tuklib_mask_nonprint(str));

 	// Allocate memory to hold all the sizes specified.
 	// If --block-list was specified already, its value is forgotten.
@@ -562,7 +563,8 @@ parse_real(args_info *args, int argc, char **argv)
 				if (++i == ARRAY_SIZE(types))
 					message_fatal(_("%s: Unknown file "
 							"format type"),
-							optarg);
+							tuklib_mask_nonprint(
+								optarg));

 			opt_format = types[i].format;
 			break;
@@ -584,15 +586,16 @@ parse_real(args_info *args, int argc, char **argv)
 			while (strcmp(types[i].str, optarg) != 0) {
 				if (++i == ARRAY_SIZE(types))
 					message_fatal(_("%s: Unsupported "
-							"integrity "
-							"check type"), optarg);
+						"integrity check type"),
+						tuklib_mask_nonprint(optarg));
 			}

 			// Use a separate check in case we are using different
 			// liblzma than what was used to compile us.
 			if (!lzma_check_is_supported(types[i].check))
-				message_fatal(_("%s: Unsupported integrity "
-						"check type"), optarg);
+				message_fatal(_("%s: Unsupported "
+						"integrity check type"),
+						tuklib_mask_nonprint(optarg));

 			coder_set_check(types[i].check);
 			break;
@@ -645,8 +648,9 @@ parse_real(args_info *args, int argc, char **argv)
 					// TRANSLATORS: This is a translatable
 					// string because French needs a space
 					// before the colon ("%s : %s").
-					message_fatal(_("%s: %s"), optarg,
-							strerror(errno));
+					message_fatal(_("%s: %s"),
+						tuklib_mask_nonprint(optarg),
+						strerror(errno));
 			}

 			break;
diff --git a/src/xz/coder.c b/src/xz/coder.c
index c28f874a..92e35622 100644
--- a/src/xz/coder.c
+++ b/src/xz/coder.c
@@ -172,7 +172,7 @@ str_to_filters(const char *str, uint32_t index, uint32_t flags)
 		// the messages are included in xz's translations.
 		message(V_ERROR, _("Error in --filters%s=FILTERS option:"),
 				filter_num);
-		message(V_ERROR, "%s", str);
+		message(V_ERROR, "%s", tuklib_mask_nonprint(str));
 		message(V_ERROR, "%*s^", error_pos, "");
 		message_fatal("%s", _(err));
 	}
diff --git a/src/xz/util.c b/src/xz/util.c
index bb9b86ad..06b774d0 100644
--- a/src/xz/util.c
+++ b/src/xz/util.c
@@ -111,7 +111,7 @@ str_to_uint64(const char *name, const char *value, uint64_t min, uint64_t max)
 		return max;

 	if (*value < '0' || *value > '9')
-		message_fatal(_("%s: %s"), value,
+		message_fatal(_("%s: %s"), tuklib_mask_nonprint(value),
 			_("Value is not a non-negative decimal integer"));

 	do {