scripts/download.pl: read file natively
authorMatteo Croce <teknoraver@meta.com>
Sat, 28 Sep 2024 23:01:01 +0000 (01:01 +0200)
committerChristian Marangi <ansuelsmth@gmail.com>
Sun, 27 Oct 2024 13:24:32 +0000 (14:24 +0100)
Read files natively instead of execing /bin/cat.

Signed-off-by: Matteo Croce <teknoraver@meta.com>
Link: https://github.com/openwrt/openwrt/pull/16784
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
scripts/download.pl

index c6c9b8e56cd4c310b6b4da061e3552a827ce0196..9966f9f1e6e9561fc40cca095e27ce7ed227418e 100755 (executable)
@@ -32,6 +32,12 @@ my $download_tool;
 
 $url_filename or $url_filename = $filename;
 
+sub cat {
+       open my $fh, '<', $1 or die "Can't open file $!";
+       read $fh, my $file_content, -s $fh;
+       return $file_content;
+}
+
 sub localmirrors {
        my @mlist;
        open LM, "$scriptdir/localmirrors" and do {
@@ -203,7 +209,7 @@ sub download
                copy($link, "$target/$filename.dl");
 
                $hash_cmd and do {
-                       if (system("cat '$target/$filename.dl' | $hash_cmd > '$target/$filename.hash'")) {
+                       if (system("$hash_cmd '$target/$filename.dl' > '$target/$filename.hash'")) {
                                print("Failed to generate hash for $filename\n");
                                return;
                        }
@@ -233,7 +239,7 @@ sub download
        }
 
        $hash_cmd and do {
-               my $sum = `cat "$target/$filename.hash"`;
+               my $sum = cat("$target/$filename.hash");
                $sum =~ /^(\w+)\s*/ or die "Could not generate file hash\n";
                $sum = $1;
 
@@ -299,11 +305,11 @@ projectsmirrors '@OPENWRT';
 
 if (-f "$target/$filename") {
        $hash_cmd and do {
-               if (system("cat '$target/$filename' | $hash_cmd > '$target/$filename.hash'")) {
+               if (system("$hash_cmd '$target/$filename' > '$target/$filename.hash'")) {
                        die "Failed to generate hash for $filename\n";
                }
 
-               my $sum = `cat "$target/$filename.hash"`;
+               my $sum = cat("$target/$filename.hash");
                $sum =~ /^(\w+)\s*/ or die "Could not generate file hash\n";
                $sum = $1;