mirror of https://github.com/aria2/aria2
Add error handling for sigaction, signal and strdup
parent
b316b2cec5
commit
1ce6ac0b23
|
@ -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:
|
||||
|
|
12
src/util.cc
12
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
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue