mdlinkcheck: pass curl arguments to open() as list

To prevent misinterpreting quotes or other special characters.

Requires Perl 5.22+ (2015-Jun-01) on Windows.

Ref: https://perldoc.perl.org/functions/open

Closes #19437
This commit is contained in:
Viktor Szakats 2025-11-10 01:27:25 +01:00
parent b39c158e4a
commit 77be4a7ab2
No known key found for this signature in database
GPG key ID: B5ABD165E2AEF201

View file

@ -138,13 +138,17 @@ sub checkurl {
}
print "check $url\n";
my $curlcmd="curl -ILfsm10 --retry 2 --retry-delay 5 -A \"Mozilla/curl.se link-probe\"";
$url =~ s/\+/%2B/g;
if($url =~ /[\"\'\n]/) {
print STDERR "Bad URL in markdown: %s\n", $url{$url};
my @content;
if(open(my $fh, '-|', 'curl', '-ILfsm10', '--retry', '2', '--retry-delay', '5',
'-A', 'Mozilla/curl.se link-probe', $url)) {
@content = <$fh>;
close $fh;
}
else {
print STDERR "FAIL\n";
return 1; # fail
}
my @content = `$curlcmd \"$url\"`;
if(!$content[0]) {
print STDERR "FAIL\n";
return 1; # fail