mirror of https://github.com/aria2/aria2
Add error handling for sigaction, signal and strdup
parent
b316b2cec5
commit
1ce6ac0b23
|
@ -92,6 +92,12 @@ void putOptions(struct option* longOpts, int* plopt, InputIterator first,
|
||||||
(*longOpts).name = (*first)->getName();
|
(*longOpts).name = (*first)->getName();
|
||||||
#else // !HAVE_OPTION_CONST_NAME
|
#else // !HAVE_OPTION_CONST_NAME
|
||||||
(*longOpts).name = strdup((*first)->getName());
|
(*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
|
#endif // !HAVE_OPTION_CONST_NAME
|
||||||
switch ((*first)->getArgType()) {
|
switch ((*first)->getArgType()) {
|
||||||
case OptionHandler::REQ_ARG:
|
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_handler = handler;
|
||||||
sigact.sa_flags = flags;
|
sigact.sa_flags = flags;
|
||||||
sigact.sa_mask = *mask;
|
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
|
#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
|
#endif // HAVE_SIGACTION
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue