Fix path delimiters in connection string on Windows
authorDaniel Gustafsson <dgustafsson@postgresql.org>
Fri, 3 Dec 2021 10:41:17 +0000 (11:41 +0100)
committerDaniel Gustafsson <dgustafsson@postgresql.org>
Fri, 3 Dec 2021 10:41:17 +0000 (11:41 +0100)
The temporary path generated in commit c113d8ad5 cannot be passed as-is in
the connection string on Windows since the path delimiting backslashes will
be treated as escape characters. Fix by converting backslash to slash as in
similar path usecases in other tests.

Reported-by: Andres Freund <andres@anarazel.de>
Discussion: https://postgr.es/m/20211202195130.e7pprpsx4ell22sp@alap3.anarazel.de

src/test/ssl/t/001_ssltests.pl
src/test/ssl/t/002_scram.pl
src/test/ssl/t/003_sslinfo.pl

index 4eb181bd0410465de1bda2f7583be72588049ca6..45f8d4b530885d608fcb13a606a43c0ad8c10bf4 100644 (file)
@@ -56,6 +56,7 @@ foreach my $keyfile (@keys)
    chmod 0600, "$cert_tempdir/$keyfile"
      or die "failed to change permissions on $cert_tempdir/$keyfile: $!";
    $key{$keyfile} = PostgreSQL::Test::Utils::perl2host("$cert_tempdir/$keyfile");
+   $key{$keyfile} =~ s!\\!/!g if $PostgreSQL::Test::Utils::windows_os;
 }
 
 # Also make a copy of that explicitly world-readable.  We can't
@@ -67,7 +68,7 @@ copy("ssl/client.key", "$cert_tempdir/client_wrongperms.key")
 chmod 0644, "$cert_tempdir/client_wrongperms.key"
   or die "failed to change permissions on $cert_tempdir/client_wrongperms.key: $!";
 $key{'client_wrongperms.key'} = PostgreSQL::Test::Utils::perl2host("$cert_tempdir/client_wrongperms.key");
-
+$key{'client_wrongperms.key'} =~ s!\\!/!g if $PostgreSQL::Test::Utils::windows_os;
 #### Set up the server.
 
 note "setting up data directory";
index b965ff038a5f51d9eb47cab2231cead3563a125d..1c14bb62e62f363aee954ffc7dab59b65105af2a 100644 (file)
@@ -102,6 +102,7 @@ copy("ssl/client.key", "$cert_tempdir/client_scram.key")
   "couldn't copy ssl/client_key to $cert_tempdir/client_scram.key for permission change: $!";
 chmod 0600, "$cert_tempdir/client_scram.key"
   or die "failed to change permissions on $cert_tempdir/client_scram.key: $!";
+$client_tmp_key =~ s!\\!/!g if $PostgreSQL::Test::Utils::windows_os;
 $node->connect_fails(
    "sslcert=ssl/client.crt sslkey=$client_tmp_key sslrootcert=invalid hostaddr=$SERVERHOSTADDR dbname=certdb user=ssltestuser channel_binding=require",
    "Cert authentication and channel_binding=require",
index 448742129f48b2e5a960b84a89d34253a7e3bcaf..61300402830209e70e4706769036de2f497d07b0 100644 (file)
@@ -44,6 +44,7 @@ copy("ssl/client_ext.key", "$cert_tempdir/client_ext.key")
   "couldn't copy ssl/client_ext.key to $cert_tempdir/client_ext.key for permissions change: $!";
 chmod 0600, "$cert_tempdir/client_ext.key"
   or die "failed to change permissions on $cert_tempdir/client_ext.key: $!";
+$client_tmp_key =~ s!\\!/!g if $PostgreSQL::Test::Utils::windows_os;
 
 #### Set up the server.