Handle spaces in OpenSSL install location for MSVC
authorAndrew Dunstan <[email protected]>
Fri, 4 Oct 2019 19:34:40 +0000 (15:34 -0400)
committerAndrew Dunstan <[email protected]>
Fri, 4 Oct 2019 19:38:36 +0000 (15:38 -0400)
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.

src/tools/msvc/Project.pm
src/tools/msvc/Solution.pm

index 9ca5b1f13ad39a496b20a5d3cf9e776e3e92bbd9..f99f5ea52f9c85c388a57f8396a021f510bed3d1 100644 (file)
@@ -126,7 +126,8 @@ sub AddLibrary
 {
    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 = '&quot;' . $lib . "&quot;";
    }
index cccc9df52576dc2bed0c7e5bcb536a2f8e338728..facf3489fb7fbc8e4803d41113da6aa0008d500b 100644 (file)
@@ -133,8 +133,9 @@ sub GetOpenSSLVersion
 
    # 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