]> granicus.if.org Git - icinga2/commitdiff
ExternalCommandListener: Fix crash when reading from socket
authorMichael Friedrich <michael.friedrich@netways.de>
Wed, 20 Jan 2016 15:38:31 +0000 (16:38 +0100)
committerMichael Friedrich <michael.friedrich@netways.de>
Wed, 20 Jan 2016 15:38:31 +0000 (16:38 +0100)
refs #10700

lib/compat/externalcommandlistener.cpp

index deece0217427998d1866a5d7346b7b6985c838dc..cc484f1f6f32b0e9d773583f498f4fd9c3584363 100644 (file)
@@ -110,7 +110,16 @@ void ExternalCommandListener::CommandPipeThread(const String& commandPath)
                        sock->Poll(true, false);
 
                        char buffer[8192];
-                       size_t rc = sock->Read(buffer, sizeof(buffer));
+                       size_t rc;
+
+                       try {
+                               rc = sock->Read(buffer, sizeof(buffer));
+                       } catch (const std::exception& ex) {
+                               Log(LogWarning, "ExternalCommandListener")
+                                   << "Cannot read from socket." << DiagnosticInformation(ex);
+                               break;
+                       }
+
                        if (rc <= 0)
                                break;