summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDaniel Gustafsson <dgustafsson@postgresql.org>2025-10-17 14:21:26 +0200
committerDaniel Gustafsson <dgustafsson@postgresql.org>2025-10-17 14:21:26 +0200
commit7d129ba54e7425baf43aa518d417ba3e4e94a443 (patch)
treed643dc4b515cac6ab361df6f2b237ec272cdb7f1 /src
parente1a912c86d5205371b043772aa89908f2452cbf0 (diff)
Avoid warnings in tests when openssl binary isn't available
The SSL tests for pg_stat_ssl tries to exactly match the serial from the certificate by extracting it with the openssl binary. If that fails due to the binary not being available, a fallback match is used, but the attempt to execute a missing binary adds a warning to the output which can confuse readers for a failure in the test. Fix by only attempting if the openssl binary was found by autoconf/meson. Backpatch down to v16 where commit c8e4030d1bdd made the test use the OPENSSL variable from autoconf/meson instead of a hard- coded value. Author: Daniel Gustafsson <daniel@yesql.se> Reported-by: Christoph Berg <myon@debian.org> Discussion: https://postgr.es/m/aNPSp1-RIAs3skZm@msg.df7cb.de Backpatch-through: 16
Diffstat (limited to 'src')
-rw-r--r--src/test/ssl/t/001_ssltests.pl42
1 files changed, 19 insertions, 23 deletions
diff --git a/src/test/ssl/t/001_ssltests.pl b/src/test/ssl/t/001_ssltests.pl
index b2eb18d3e81..eaee88d027e 100644
--- a/src/test/ssl/t/001_ssltests.pl
+++ b/src/test/ssl/t/001_ssltests.pl
@@ -748,33 +748,29 @@ TODO:
# pg_stat_ssl
-my $serialno = `$ENV{OPENSSL} x509 -serial -noout -in ssl/client.crt`;
-if ($? == 0)
-{
- # OpenSSL prints serial numbers in hexadecimal and converting the serial
- # from hex requires a 64-bit capable Perl as the serialnumber is based on
- # the current timestamp. On 32-bit fall back to checking for it being an
- # integer like how we do when grabbing the serial fails.
- if ($Config{ivsize} == 8)
- {
- no warnings qw(portable);
+# If the openssl program isn't available, or fails to run, fall back to a
+# generic integer match rather than skipping the test.
+my $serialno = '\d+';
- $serialno =~ s/^serial=//;
- $serialno =~ s/\s+//g;
- $serialno = hex($serialno);
- }
- else
+if ($ENV{OPENSSL} ne '')
+{
+ $serialno = `$ENV{OPENSSL} x509 -serial -noout -in ssl/client.crt`;
+ if ($? == 0)
{
- $serialno = '\d+';
+ # OpenSSL prints serial numbers in hexadecimal and converting the serial
+ # from hex requires a 64-bit capable Perl as the serialnumber is based on
+ # the current timestamp. On 32-bit fall back to checking for it being an
+ # integer like how we do when grabbing the serial fails.
+ if ($Config{ivsize} == 8)
+ {
+ no warnings qw(portable);
+
+ $serialno =~ s/^serial=//;
+ $serialno =~ s/\s+//g;
+ $serialno = hex($serialno);
+ }
}
}
-else
-{
- # OpenSSL isn't functioning on the user's PATH. This probably isn't worth
- # skipping the test over, so just fall back to a generic integer match.
- warn "couldn't run \"$ENV{OPENSSL} x509\" to get client cert serialno";
- $serialno = '\d+';
-}
command_like(
[