This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
podcheck: Make sure digest gets a byte string
authorKarl Williamson <khw@cpan.org>
Thu, 17 Feb 2022 02:23:35 +0000 (19:23 -0700)
committerKarl Williamson <khw@cpan.org>
Thu, 17 Feb 2022 02:31:20 +0000 (19:31 -0700)
Digest only accepts bytes; this makes sure it doesn't get UTF-8 encoded
characters.

t/porting/podcheck.t

index 0f2f473..22abfba 100644 (file)
@@ -1635,7 +1635,9 @@ sub is_pod_file {
                         | $only_for_interior_links_re
                     /x)
     {
-        $digest->add($contents);
+        my $byte_contents = $contents;
+        utf8::encode($byte_contents);
+        $digest->add($byte_contents);   # Doesn't handle Unicode
         $digests{$filename} = $digest->digest;
 
         # lib files aren't analyzed if they are duplicates of files copied
@@ -1805,7 +1807,9 @@ foreach my $filename (@files) {
             # If the return is undef, it means that $filename was a transitory
             # file; skip it.
             next FILE unless defined $contents;
-            $digest->add($contents);
+            my $byte_contents = $contents;
+            utf8::encode($byte_contents);
+            $digest->add($byte_contents);   # Doesn't handle Unicode
             $id = $digest->digest;
         }