From 85bc696c38ee8b980e1c694233edaa50f9c4a007 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Fri, 16 Oct 2015 22:33:48 +0900 Subject: [PATCH] nghttpx: Add error handling for strdup and sigaction --- src/shrpx.cc | 5 +++++ src/shrpx_signal.cc | 8 +++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/shrpx.cc b/src/shrpx.cc index fa19c566..831fc124 100644 --- a/src/shrpx.cc +++ b/src/shrpx.cc @@ -1682,6 +1682,11 @@ int main(int argc, char **argv) { for (int i = 0; i < argc; ++i) { mod_config()->argv[i] = strdup(argv[i]); + if (mod_config()->argv[i] == nullptr) { + auto error = errno; + LOG(FATAL) << "failed to copy argv: " << strerror(error); + exit(EXIT_FAILURE); + } } mod_config()->cwd = getcwd(nullptr, 0); diff --git a/src/shrpx_signal.cc b/src/shrpx_signal.cc index e97d90b6..33a6df6c 100644 --- a/src/shrpx_signal.cc +++ b/src/shrpx_signal.cc @@ -97,8 +97,14 @@ void signal_set_handler(void (*handler)(int), Signals &&sigs) { struct sigaction act {}; act.sa_handler = handler; sigemptyset(&act.sa_mask); + int rv; for (auto sig : sigs) { - sigaction(sig, &act, nullptr); + rv = sigaction(sig, &act, nullptr); + if (rv != 0) { + auto error = errno; + LOG(WARN) << "sigaction() with signal " << sig + << " failed: errno=" << error; + } } } } // namespace