aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/bin/pg_archivecleanup/t/010_pg_archivecleanup.pl2
-rw-r--r--src/bin/pg_basebackup/t/010_pg_basebackup.pl8
-rw-r--r--src/bin/pg_ctl/t/001_start_stop.pl2
-rw-r--r--src/bin/pg_resetwal/t/002_corrupted.pl2
-rw-r--r--src/bin/pg_rewind/t/009_growing_files.pl2
-rw-r--r--src/bin/pg_rewind/t/RewindTest.pm4
-rw-r--r--src/pl/plperl/text2macro.pl4
-rw-r--r--src/test/kerberos/t/001_auth.pl2
-rw-r--r--src/test/modules/ssl_passphrase_callback/t/001_testfunc.pl2
-rw-r--r--src/test/perl/PostgreSQL/Test/Cluster.pm12
-rw-r--r--src/test/perl/PostgreSQL/Test/Utils.pm16
-rw-r--r--src/test/ssl/t/SSL/Server.pm10
-rw-r--r--src/tools/msvc_gendef.pl4
-rw-r--r--src/tools/perlcheck/perlcriticrc8
-rwxr-xr-xsrc/tools/pgindent/pgindent17
15 files changed, 52 insertions, 43 deletions
diff --git a/src/bin/pg_archivecleanup/t/010_pg_archivecleanup.pl b/src/bin/pg_archivecleanup/t/010_pg_archivecleanup.pl
index 792f5677c87..91a98c71e99 100644
--- a/src/bin/pg_archivecleanup/t/010_pg_archivecleanup.pl
+++ b/src/bin/pg_archivecleanup/t/010_pg_archivecleanup.pl
@@ -36,7 +36,7 @@ sub create_files
{
foreach my $fn (map { $_->{name} } @_)
{
- open my $file, '>', "$tempdir/$fn";
+ open my $file, '>', "$tempdir/$fn" or die $!;
print $file 'CONTENT';
close $file;
diff --git a/src/bin/pg_basebackup/t/010_pg_basebackup.pl b/src/bin/pg_basebackup/t/010_pg_basebackup.pl
index d3c83f26e4b..490a9822f09 100644
--- a/src/bin/pg_basebackup/t/010_pg_basebackup.pl
+++ b/src/bin/pg_basebackup/t/010_pg_basebackup.pl
@@ -77,7 +77,7 @@ $node->command_fails([ @pg_basebackup_defs, '-D', "$tempdir/backup", '-n' ],
ok(-d "$tempdir/backup", 'backup directory was created and left behind');
rmtree("$tempdir/backup");
-open my $conf, '>>', "$pgdata/postgresql.conf";
+open my $conf, '>>', "$pgdata/postgresql.conf" or die $!;
print $conf "max_replication_slots = 10\n";
print $conf "max_wal_senders = 10\n";
print $conf "wal_level = replica\n";
@@ -175,7 +175,7 @@ foreach my $filename (
qw(backup_label tablespace_map postgresql.auto.conf.tmp
current_logfiles.tmp global/pg_internal.init.123))
{
- open my $file, '>>', "$pgdata/$filename";
+ open my $file, '>>', "$pgdata/$filename" or die $!;
print $file "DONOTCOPY";
close $file;
}
@@ -185,7 +185,7 @@ foreach my $filename (
# unintended side effects.
if ($Config{osname} ne 'darwin')
{
- open my $file, '>>', "$pgdata/.DS_Store";
+ open my $file, '>>', "$pgdata/.DS_Store" or die $!;
print $file "DONOTCOPY";
close $file;
}
@@ -423,7 +423,7 @@ SKIP:
my $tblspcoid = $1;
my $escapedRepTsDir = $realRepTsDir;
$escapedRepTsDir =~ s/\\/\\\\/g;
- open my $mapfile, '>', $node2->data_dir . '/tablespace_map';
+ open my $mapfile, '>', $node2->data_dir . '/tablespace_map' or die $!;
print $mapfile "$tblspcoid $escapedRepTsDir\n";
close $mapfile;
diff --git a/src/bin/pg_ctl/t/001_start_stop.pl b/src/bin/pg_ctl/t/001_start_stop.pl
index fd56bf7706a..cbdaee57fb1 100644
--- a/src/bin/pg_ctl/t/001_start_stop.pl
+++ b/src/bin/pg_ctl/t/001_start_stop.pl
@@ -23,7 +23,7 @@ command_ok([ 'pg_ctl', 'initdb', '-D', "$tempdir/data", '-o', '-N' ],
command_ok([ $ENV{PG_REGRESS}, '--config-auth', "$tempdir/data" ],
'configure authentication');
my $node_port = PostgreSQL::Test::Cluster::get_free_port();
-open my $conf, '>>', "$tempdir/data/postgresql.conf";
+open my $conf, '>>', "$tempdir/data/postgresql.conf" or die $!;
print $conf "fsync = off\n";
print $conf "port = $node_port\n";
print $conf PostgreSQL::Test::Utils::slurp_file($ENV{TEMP_CONFIG})
diff --git a/src/bin/pg_resetwal/t/002_corrupted.pl b/src/bin/pg_resetwal/t/002_corrupted.pl
index 897b03162e0..c5e09bbb688 100644
--- a/src/bin/pg_resetwal/t/002_corrupted.pl
+++ b/src/bin/pg_resetwal/t/002_corrupted.pl
@@ -21,7 +21,7 @@ my $size = -s $pg_control;
my $data;
open my $fh, '<', $pg_control or BAIL_OUT($!);
binmode $fh;
-read $fh, $data, 16;
+read $fh, $data, 16 or die $!;
close $fh;
# Fill pg_control with zeros
diff --git a/src/bin/pg_rewind/t/009_growing_files.pl b/src/bin/pg_rewind/t/009_growing_files.pl
index 3541d735685..8e59ad69961 100644
--- a/src/bin/pg_rewind/t/009_growing_files.pl
+++ b/src/bin/pg_rewind/t/009_growing_files.pl
@@ -69,7 +69,7 @@ isnt($standby_size, $primary_size, "File sizes should differ");
# Extract the last line from the verbose output as that should have the error
# message for the unexpected file size
my $last;
-open my $f, '<', "$standby_pgdata/tst_both_dir/file1";
+open my $f, '<', "$standby_pgdata/tst_both_dir/file1" or die $!;
$last = $_ while (<$f>);
close $f;
like($last, qr/error: size of source file/, "Check error message");
diff --git a/src/bin/pg_rewind/t/RewindTest.pm b/src/bin/pg_rewind/t/RewindTest.pm
index 72deab8e886..0bf59db9973 100644
--- a/src/bin/pg_rewind/t/RewindTest.pm
+++ b/src/bin/pg_rewind/t/RewindTest.pm
@@ -311,8 +311,8 @@ sub run_pg_rewind
# Make sure that directories have the right umask as this is
# required by a follow-up check on permissions, and better
# safe than sorry.
- chmod(0700, $node_primary->archive_dir);
- chmod(0700, $node_primary->data_dir . "/pg_wal");
+ chmod(0700, $node_primary->archive_dir) or die $!;
+ chmod(0700, $node_primary->data_dir . "/pg_wal") or die $!;
# Add appropriate restore_command to the target cluster
$node_primary->enable_restoring($node_primary, 0);
diff --git a/src/pl/plperl/text2macro.pl b/src/pl/plperl/text2macro.pl
index 577417ac7ac..c6240af69c7 100644
--- a/src/pl/plperl/text2macro.pl
+++ b/src/pl/plperl/text2macro.pl
@@ -88,11 +88,11 @@ sub selftest
close $fh;
system("perl $0 --name=X $tmp.pl > $tmp.c") == 0 or die;
- open $fh, '>>', "$tmp.c";
+ open $fh, '>>', "$tmp.c" or die;
print $fh "#include <stdio.h>\n";
print $fh "int main() { puts(X); return 0; }\n";
close $fh;
- system("cat -n $tmp.c");
+ system("cat -n $tmp.c") == 0 or die;
system("make $tmp") == 0 or die;
open $fh, '<', "./$tmp |" or die;
diff --git a/src/test/kerberos/t/001_auth.pl b/src/test/kerberos/t/001_auth.pl
index 2a81ce8834b..e51e87d0a2e 100644
--- a/src/test/kerberos/t/001_auth.pl
+++ b/src/test/kerberos/t/001_auth.pl
@@ -111,7 +111,7 @@ $krb5_version = $1;
# Construct a pgpass file to make sure we don't use it
append_to_file($pgpass, '*:*:*:*:abc123');
-chmod 0600, $pgpass;
+chmod 0600, $pgpass or die $!;
# Build the krb5.conf to use.
#
diff --git a/src/test/modules/ssl_passphrase_callback/t/001_testfunc.pl b/src/test/modules/ssl_passphrase_callback/t/001_testfunc.pl
index 9aa4bdc3704..a2bfb645760 100644
--- a/src/test/modules/ssl_passphrase_callback/t/001_testfunc.pl
+++ b/src/test/modules/ssl_passphrase_callback/t/001_testfunc.pl
@@ -33,7 +33,7 @@ my $ddir = $node->data_dir;
# install certificate and protected key
copy("server.crt", $ddir);
copy("server.key", $ddir);
-chmod 0600, "$ddir/server.key";
+chmod 0600, "$ddir/server.key" or die $!;
$node->start;
diff --git a/src/test/perl/PostgreSQL/Test/Cluster.pm b/src/test/perl/PostgreSQL/Test/Cluster.pm
index 4ea10d063c4..b08296605c4 100644
--- a/src/test/perl/PostgreSQL/Test/Cluster.pm
+++ b/src/test/perl/PostgreSQL/Test/Cluster.pm
@@ -467,7 +467,7 @@ sub set_replication_conf
$self->host eq $test_pghost
or croak "set_replication_conf only works with the default host";
- open my $hba, '>>', "$pgdata/pg_hba.conf";
+ open my $hba, '>>', "$pgdata/pg_hba.conf" or die $!;
print $hba
"\n# Allow replication (set up by PostgreSQL::Test::Cluster.pm)\n";
if ($PostgreSQL::Test::Utils::windows_os
@@ -580,7 +580,7 @@ sub init
PostgreSQL::Test::Utils::system_or_bail($ENV{PG_REGRESS},
'--config-auth', $pgdata, @{ $params{auth_extra} });
- open my $conf, '>>', "$pgdata/postgresql.conf";
+ open my $conf, '>>', "$pgdata/postgresql.conf" or die $!;
print $conf "\n# Added by PostgreSQL::Test::Cluster.pm\n";
print $conf "fsync = off\n";
print $conf "restart_after_crash = off\n";
@@ -862,7 +862,7 @@ sub init_from_backup
rmdir($data_path);
PostgreSQL::Test::RecursiveCopy::copypath($backup_path, $data_path);
}
- chmod(0700, $data_path);
+ chmod(0700, $data_path) or die $!;
# Base configuration for this node
$self->append_conf(
@@ -1688,16 +1688,16 @@ sub _reserve_port
if (kill 0, $pid)
{
# process exists and is owned by us, so we can't reserve this port
- flock($portfile, LOCK_UN);
+ flock($portfile, LOCK_UN) || die $!;
close($portfile);
return 0;
}
}
# All good, go ahead and reserve the port
- seek($portfile, 0, SEEK_SET);
+ seek($portfile, 0, SEEK_SET) || die $!;
# print the pid with a fixed width so we don't leave any trailing junk
print $portfile sprintf("%10d\n", $$);
- flock($portfile, LOCK_UN);
+ flock($portfile, LOCK_UN) || die $!;
close($portfile);
push(@port_reservation_files, $filename);
return 1;
diff --git a/src/test/perl/PostgreSQL/Test/Utils.pm b/src/test/perl/PostgreSQL/Test/Utils.pm
index 2185a079def..42d5a50dc88 100644
--- a/src/test/perl/PostgreSQL/Test/Utils.pm
+++ b/src/test/perl/PostgreSQL/Test/Utils.pm
@@ -211,10 +211,10 @@ INIT
or die "could not open STDOUT to logfile \"$test_logfile\": $!";
# Hijack STDOUT and STDERR to the log file
- open(my $orig_stdout, '>&', \*STDOUT);
- open(my $orig_stderr, '>&', \*STDERR);
- open(STDOUT, '>&', $testlog);
- open(STDERR, '>&', $testlog);
+ open(my $orig_stdout, '>&', \*STDOUT) or die $!;
+ open(my $orig_stderr, '>&', \*STDERR) or die $!;
+ open(STDOUT, '>&', $testlog) or die $!;
+ open(STDERR, '>&', $testlog) or die $!;
# The test output (ok ...) needs to be printed to the original STDOUT so
# that the 'prove' program can parse it, and display it to the user in
@@ -564,7 +564,7 @@ Find and replace string of a given file.
sub string_replace_file
{
my ($filename, $find, $replace) = @_;
- open(my $in, '<', $filename);
+ open(my $in, '<', $filename) or croak $!;
my $content = '';
while (<$in>)
{
@@ -572,7 +572,7 @@ sub string_replace_file
$content = $content . $_;
}
close $in;
- open(my $out, '>', $filename);
+ open(my $out, '>', $filename) or croak $!;
print $out $content;
close($out);
@@ -789,11 +789,11 @@ sub dir_symlink
# need some indirection on msys
$cmd = qq{echo '$cmd' | \$COMSPEC /Q};
}
- system($cmd);
+ system($cmd) == 0 or die;
}
else
{
- symlink $oldname, $newname;
+ symlink $oldname, $newname or die $!;
}
die "No $newname" unless -e $newname;
}
diff --git a/src/test/ssl/t/SSL/Server.pm b/src/test/ssl/t/SSL/Server.pm
index 149a9385119..ca4c7b567b3 100644
--- a/src/test/ssl/t/SSL/Server.pm
+++ b/src/test/ssl/t/SSL/Server.pm
@@ -191,7 +191,7 @@ sub configure_test_server_for_ssl
}
# enable logging etc.
- open my $conf, '>>', "$pgdata/postgresql.conf";
+ open my $conf, '>>', "$pgdata/postgresql.conf" or die $!;
print $conf "fsync=off\n";
print $conf "log_connections=on\n";
print $conf "log_hostname=on\n";
@@ -204,7 +204,7 @@ sub configure_test_server_for_ssl
close $conf;
# SSL configuration will be placed here
- open my $sslconf, '>', "$pgdata/sslconfig.conf";
+ open my $sslconf, '>', "$pgdata/sslconfig.conf" or die $!;
close $sslconf;
# Perform backend specific configuration
@@ -290,7 +290,7 @@ sub switch_server_cert
my %params = @_;
my $pgdata = $node->data_dir;
- open my $sslconf, '>', "$pgdata/sslconfig.conf";
+ open my $sslconf, '>', "$pgdata/sslconfig.conf" or die $!;
print $sslconf "ssl=on\n";
print $sslconf $backend->set_server_cert(\%params);
print $sslconf "ssl_passphrase_command='"
@@ -315,7 +315,7 @@ sub _configure_hba_for_ssl
# but seems best to keep it as narrow as possible for security reasons.
#
# When connecting to certdb, also check the client certificate.
- open my $hba, '>', "$pgdata/pg_hba.conf";
+ open my $hba, '>', "$pgdata/pg_hba.conf" or die $!;
print $hba
"# TYPE DATABASE USER ADDRESS METHOD OPTIONS\n";
print $hba
@@ -337,7 +337,7 @@ sub _configure_hba_for_ssl
close $hba;
# Also set the ident maps. Note: fields with commas must be quoted
- open my $map, ">", "$pgdata/pg_ident.conf";
+ open my $map, ">", "$pgdata/pg_ident.conf" or die $!;
print $map
"# MAPNAME SYSTEM-USERNAME PG-USERNAME\n",
"dn \"CN=ssltestuser-dn,OU=Testing,OU=Engineering,O=PGDG\" ssltestuser\n",
diff --git a/src/tools/msvc_gendef.pl b/src/tools/msvc_gendef.pl
index 12c49ed2654..404076dbbc3 100644
--- a/src/tools/msvc_gendef.pl
+++ b/src/tools/msvc_gendef.pl
@@ -195,8 +195,8 @@ mkdir($tempdir) unless -d $tempdir;
my $cmd = "dumpbin /nologo /symbols /out:$tmpfile " . join(' ', @files);
-system($cmd) && die "Could not call dumpbin";
-rename($tmpfile, $symfile);
+system($cmd) == 0 or die "Could not call dumpbin";
+rename($tmpfile, $symfile) or die $!;
extract_syms($symfile, \%def);
print "\n";
diff --git a/src/tools/perlcheck/perlcriticrc b/src/tools/perlcheck/perlcriticrc
index 49ac9ee52b5..4739e9f4f18 100644
--- a/src/tools/perlcheck/perlcriticrc
+++ b/src/tools/perlcheck/perlcriticrc
@@ -29,3 +29,11 @@ severity = 5
[BuiltinFunctions::ProhibitVoidMap]
severity = 5
+
+# Require checking return value of system calls. The excluded ones
+# are currently consistently checked, but more checking could be
+# added.
+[InputOutput::RequireCheckedSyscalls]
+severity = 5
+functions = :builtins
+exclude_functions = binmode chdir close closedir kill mkdir print rmdir setsockopt sleep truncate umask unlink waitpid
diff --git a/src/tools/pgindent/pgindent b/src/tools/pgindent/pgindent
index 9093d4ff739..48d83bc434f 100755
--- a/src/tools/pgindent/pgindent
+++ b/src/tools/pgindent/pgindent
@@ -80,12 +80,14 @@ my $filtered_typedefs_fh;
sub check_indent
{
- system("$indent -? < $devnull > $devnull 2>&1");
- if ($? >> 8 != 1)
+ if (system("$indent -? < $devnull > $devnull 2>&1") != 0)
{
- print STDERR
- "You do not appear to have $indent installed on your system.\n";
- exit 1;
+ if ($? >> 8 != 1)
+ {
+ print STDERR
+ "You do not appear to have $indent installed on your system.\n";
+ exit 1;
+ }
}
if (`$indent --version` !~ m/ $INDENT_VERSION /)
@@ -95,8 +97,7 @@ sub check_indent
exit 1;
}
- system("$indent -gnu < $devnull > $devnull 2>&1");
- if ($? == 0)
+ if (system("$indent -gnu < $devnull > $devnull 2>&1") == 0)
{
print STDERR
"You appear to have GNU indent rather than BSD indent.\n";
@@ -283,7 +284,7 @@ sub run_indent
unlink "$filename.BAK";
- open(my $src_out, '<', $filename);
+ open(my $src_out, '<', $filename) || die $!;
local ($/) = undef;
$source = <$src_out>;
close($src_out);