On 22.05.2026 22:09:07 MSK you wrote:
> diff --git a/bin/lintian b/bin/lintian
> index 488b3790b..13673ec5d 100755
> --- a/bin/lintian
> +++ b/bin/lintian
> @@ -733,6 +733,7 @@ for my $subject (@subjects) {
> next
> if $basename =~ m{/};
>
> + utf8::downgrade($basename) if !utf8::is_utf8($parent);
> die encode_utf8("$parent/$basename does not exist, exiting\n")
> unless -e "$parent/$basename";Perldoc says that utf8::is_utf8 is intended for debugging and testing purposes and should not be used in production code. The utf8 flag depends on the string history, how it was processed, and hints to Perl whether fast byte algorithms for indexing and in the length function are allowed or not. I suppose utf8::downgrade can be called unconditionally. Or even better, decode_utf8 already loaded from the Encode module because it never fails. The deb822(5) manual page states: "All control files must be encoded in UTF-8." And we have no choice but to decode $basename back to raw octets before doing file operations. A more accurate solution would be to decode characters before setting the files property of $processable. However, I have not dived into Lintian internals enough to understand where the value is being parsed.
signature.asc
Description: This is a digitally signed message part.

