summaryrefslogtreecommitdiff
path: root/src/OptionParser.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2016-04-23 18:18:06 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2016-04-23 18:18:06 +0900
commit1ce6ac0b238b653d9b49a1c9f913d08db2b74c69 (patch)
treece91b4e92d9130e401c0d0b917f9ee0b019e6615 /src/OptionParser.cc
parentb316b2cec5ac3bc2d584e2545c0b9a32a330cfe1 (diff)
Add error handling for sigaction, signal and strdup
Diffstat (limited to 'src/OptionParser.cc')
-rw-r--r--src/OptionParser.cc8
1 files changed, 7 insertions, 1 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: