From: Viktor Szakats Date: Tue, 11 Nov 2025 10:09:36 +0000 (+0100) Subject: mk-ca-bundle.pl: use `open()` with argument list to replace backticks X-Git-Tag: rc-8_18_0-1~348 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d499aa52385a520ddbbb8694af3cd04411a91933;p=thirdparty%2Fcurl.git mk-ca-bundle.pl: use `open()` with argument list to replace backticks On Windows this requires Perl 5.22 from year 2015. Also: - mdlinkcheck: delete redundant error handling logic. Follow-up to 77be4a7ab2b5a0c633b9107fd286bda1f57e4725 #19437 Closes #19461 --- diff --git a/scripts/mdlinkcheck b/scripts/mdlinkcheck index 842f0c9766..6b648786f3 100755 --- a/scripts/mdlinkcheck +++ b/scripts/mdlinkcheck @@ -145,10 +145,6 @@ sub checkurl { @content = <$fh>; close $fh; } - else { - print STDERR "FAIL\n"; - return 1; # fail - } if(!$content[0]) { print STDERR "FAIL\n"; return 1; # fail diff --git a/scripts/mk-ca-bundle.pl b/scripts/mk-ca-bundle.pl index cb0b586093..af31ccd10e 100755 --- a/scripts/mk-ca-bundle.pl +++ b/scripts/mk-ca-bundle.pl @@ -247,7 +247,9 @@ sub sha256 { close(FILE); } else { # Use OpenSSL command if Perl Digest::SHA modules not available - $result = `"$openssl" dgst -r -sha256 "$_[0]"`; + open(my $fh, '-|', $openssl, 'dgst', '-r', '-sha256', $_[0]) or die "Failed running openssl on '$_[0]': $!"; + $result = <$fh>; # read first line + close $fh; $result =~ s/^([0-9a-f]{64}) .+/$1/is; } return $result; @@ -311,10 +313,16 @@ if(!$opt_n) { if($curl) { if($curl =~ /^Protocols:.* https( |$)/m) { report "Get certdata with curl!"; - my $proto = !$opt_k ? "--proto =https" : ""; - my $quiet = $opt_q ? "-s" : ""; - my @out = `curl -Lw %{response_code} $proto $quiet -o "$txt" "$url"`; - if(!$? && @out && $out[0] == 200) { + my @opts = (); + push @opts, '--proto', '=https' if !$opt_k; + push @opts, '-s' if $opt_q; + my $out = ''; + if(open(my $fh, '-|', 'curl', '-Lw', '%{response_code}', (@opts), '-o', $txt, $url)) { + $out = <$fh>; # read first line + chomp $out; + close $fh; + } + if($out && $out == 200) { $fetched = 1; report "Downloaded $txt"; }