summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/OptionParser.cc8
-rw-r--r--src/util.cc12
2 files changed, 17 insertions, 3 deletions
diff --git a/src/OptionParser.cc b/src/OptionParser.cc
index c1e306da..75d0885f 100644
--- a/src/OptionParser.cc
+++ b/src/OptionParser.cc
@@ -90,8 +90,14 @@ void putOptions(struct option* longOpts, int* plopt, InputIterator first,
if (*first && !(*first)->isHidden()) {
#ifdef HAVE_OPTION_CONST_NAME
(*longOpts).name = (*first)->getName();
-#else // !HAVE_OPTION_CONST_NAME
+#else // !HAVE_OPTION_CONST_NAME
(*longOpts).name = strdup((*first)->getName());
+ if ((*longOpts).name == nullptr) {
+ auto errNum = errno;
+ A2_LOG_ERROR(
+ fmt("strdup() failed: %s", util::safeStrerror(errNum).c_str()));
+ exit(EXIT_FAILURE);
+ }
#endif // !HAVE_OPTION_CONST_NAME
switch ((*first)->getArgType()) {
case OptionHandler::REQ_ARG:
diff --git a/src/util.cc b/src/util.cc
index 2f9e7d38..a2590235 100644
--- a/src/util.cc
+++ b/src/util.cc
@@ -1341,9 +1341,17 @@ void setGlobalSignalHandler(int sig, sigset_t* mask, signal_handler_t handler,
sigact.sa_handler = handler;
sigact.sa_flags = flags;
sigact.sa_mask = *mask;
- sigaction(sig, &sigact, nullptr);
+ if (sigaction(sig, &sigact, nullptr) == -1) {
+ auto errNum = errno;
+ A2_LOG_ERROR(fmt("sigaction() failed for signal %d: %s", sig,
+ safeStrerror(errNum).c_str()));
+ }
#else
- signal(sig, handler);
+ if (signal(sig, handler) == SIG_ERR) {
+ auto errNum = errno;
+ A2_LOG_ERROR(fmt("signal() failed for signal %d: %s", sig,
+ safeStrerror(errNum).c_str()));
+ }
#endif // HAVE_SIGACTION
}