First, make sure that the .exe name is quoted when trying to get the
version number. Also, don't quote the lib name for using in the project
files if it's already been quoted. This second change applies to all
libraries, not just OpenSSL.
This has clearly been broken forever, so backpatch to all live branches.
{
my ($self, $lib, $dbgsuffix) = @_;
- if ($lib =~ m/\s/)
+ # quote lib name if it has spaces and isn't already quoted
+ if ($lib =~ m/\s/ && $lib !~ m/^[&]quot;/)
{
$lib = '"' . $lib . """;
}
# Attempt to get OpenSSL version and location. This assumes that
# openssl.exe is in the specified directory.
+ # Quote the .exe name in case it has spaces
my $opensslcmd =
- $self->{options}->{openssl} . "\\bin\\openssl.exe version 2>&1";
+ qq("$self->{options}->{openssl}\\bin\\openssl.exe" version 2>&1);
my $sslout = `$opensslcmd`;
$? >> 8 == 0