aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Frost <sfrost@snowman.net>2014-01-26 16:26:18 -0500
committerStephen Frost <sfrost@snowman.net>2014-01-26 16:26:18 -0500
commit790eaa699e4a9626d8a610ec5844e1fd70d73b4e (patch)
treee2fb736de665a371d83b02fa3b53b78cbbeb1fa2
parentf2795f8b5393005ab2d2438fadce116b032bea6e (diff)
downloadpostgresql-790eaa699e4a9626d8a610ec5844e1fd70d73b4e.tar.gz
postgresql-790eaa699e4a9626d8a610ec5844e1fd70d73b4e.zip
Check dup2() results in syslogger
Consistently check the dup2() call results throughout syslogger.c. It's pretty unlikely that they'll error out, but if they do, ereport(FATAL) instead of blissfully continuing on. Spotted by the Coverity scanner.
-rw-r--r--src/backend/postmaster/syslogger.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/backend/postmaster/syslogger.c b/src/backend/postmaster/syslogger.c
index 54a2b3bd339..3c54956e70f 100644
--- a/src/backend/postmaster/syslogger.c
+++ b/src/backend/postmaster/syslogger.c
@@ -210,8 +210,14 @@ SysLoggerMain(int argc, char *argv[])
close(fileno(stderr));
if (fd != -1)
{
- dup2(fd, fileno(stdout));
- dup2(fd, fileno(stderr));
+ if (dup2(fd, fileno(stdout)) < 0)
+ ereport(FATAL,
+ (errcode_for_file_access(),
+ errmsg("could not redirect stdout: %m")));
+ if (dup2(fd, fileno(stderr)) < 0)
+ ereport(FATAL,
+ (errcode_for_file_access(),
+ errmsg("could not redirect stderr: %m")));
close(fd);
}
}