]> granicus.if.org Git - icinga2/commitdiff
Livestatus: Fix invalid livestatus query crashes Icinga 2.
authorMichael Friedrich <michael.friedrich@netways.de>
Fri, 15 Nov 2013 09:56:14 +0000 (10:56 +0100)
committerMichael Friedrich <michael.friedrich@netways.de>
Fri, 15 Nov 2013 09:56:14 +0000 (10:56 +0100)
Fixes #5076

components/livestatus/listener.cpp
test/livestatus/queries/custom/scrambled [new file with mode: 0644]

index 1d0bd444f886cb27940904fc68b14d1e47f3bf16..32395de62e15a6528894a69f4d2e9462300dd0a8 100644 (file)
@@ -132,9 +132,17 @@ void LivestatusListener::ClientThreadProc(const Socket::Ptr& client)
                                break;
                }
 
-               Query::Ptr query = make_shared<Query>(lines, GetCompatLogPath());
-               if (!query->Execute(stream))
-                       break;
+               try {
+                       Query::Ptr query = make_shared<Query>(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 (file)
index 0000000..01fe008
--- /dev/null
@@ -0,0 +1,2 @@
+D
+