From e6128a0a9675d714e0fb60023efb5bd83a56bef7 Mon Sep 17 00:00:00 2001 From: Michael Friedrich Date: Fri, 15 Nov 2013 10:56:14 +0100 Subject: [PATCH] Livestatus: Fix invalid livestatus query crashes Icinga 2. Fixes #5076 --- components/livestatus/listener.cpp | 14 +++++++++++--- test/livestatus/queries/custom/scrambled | 2 ++ 2 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 test/livestatus/queries/custom/scrambled diff --git a/components/livestatus/listener.cpp b/components/livestatus/listener.cpp index 1d0bd444f..32395de62 100644 --- a/components/livestatus/listener.cpp +++ b/components/livestatus/listener.cpp @@ -132,9 +132,17 @@ void LivestatusListener::ClientThreadProc(const Socket::Ptr& client) break; } - Query::Ptr query = make_shared(lines, GetCompatLogPath()); - if (!query->Execute(stream)) - break; + try { + Query::Ptr query = make_shared(lines, GetCompatLogPath()); + if (!query->Execute(stream)) + break; + } catch (const std::exception& ex) { + std::ostringstream info; + info << "Exception thrown while running livestatus query: " << std::endl + << boost::diagnostic_information(ex); + Log(LogCritical, "livestatus", info.str()); + return; + } } { diff --git a/test/livestatus/queries/custom/scrambled b/test/livestatus/queries/custom/scrambled new file mode 100644 index 000000000..01fe008a0 --- /dev/null +++ b/test/livestatus/queries/custom/scrambled @@ -0,0 +1,2 @@ +D + -- 2.40.0