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 }