scripts/download.pl: fix downloads with wget
authorPetr Štetiar <ynezz@true.cz>
Tue, 13 Sep 2022 05:40:37 +0000 (07:40 +0200)
committerPetr Štetiar <ynezz@true.cz>
Wed, 21 Sep 2022 09:52:40 +0000 (11:52 +0200)
Several users of wget for downloads (curl is not available in the
system) have reported broken download functionality:

 wget --tries=5 --timeout=20 --output-document=-  https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.10.142.tar.xz
 http://: Invalid host name.

Thats all happening due to '' was passed as an argument, which got later
expanded to http://.

In the context of a list constructor '' is not nothing, it is an empty
string element.  So fix it by using () as it will yield "nothing" and
thus not introduce an empty string element.

Fixes: #10692
Fixes: 90c6e3aedf16 ("scripts: always check certificates")
Signed-off-by: Jo-Philipp Wich <jo@mein.io> [shellwords() -> ()]
Signed-off-by: Petr Štetiar <ynezz@true.cz>
(cherry picked from commit 50a48faa1b8424e6b4b436b7118fffa2cba14b18)

scripts/download.pl

index 16f808da093073a33063f9d83b951e503937809b..bfee84762d58f3f10627db1d4e2b353319fce972 100755 (executable)
@@ -84,8 +84,14 @@ sub download_cmd($) {
        }
 
        return $have_curl
-               ? (qw(curl -f --connect-timeout 20 --retry 5 --location), $check_certificate ? '' : '--insecure', shellwords($ENV{CURL_OPTIONS} || ''), $url)
-               : (qw(wget --tries=5 --timeout=20 --output-document=-), $check_certificate ? '' : '--no-check-certificate', shellwords($ENV{WGET_OPTIONS} || ''), $url)
+               ? (qw(curl -f --connect-timeout 20 --retry 5 --location),
+                       $check_certificate ? () : '--insecure',
+                       shellwords($ENV{CURL_OPTIONS} || ''),
+                       $url)
+               : (qw(wget --tries=5 --timeout=20 --output-document=-),
+                       $check_certificate ? () : '--no-check-certificate',
+                       shellwords($ENV{WGET_OPTIONS} || ''),
+                       $url)
        ;
 }