]> granicus.if.org Git - icinga2/commitdiff
Fix nullptr deref in cluster events
authorNoah Hilverling <noah.hilverling@icinga.com>
Wed, 31 Jan 2018 09:17:49 +0000 (10:17 +0100)
committerJean Flach <jean-marcel.flach@icinga.com>
Thu, 22 Feb 2018 13:55:44 +0000 (14:55 +0100)
lib/icinga/clusterevents.cpp
lib/remote/jsonrpcconnection-pki.cpp
lib/remote/jsonrpcconnection.cpp

index 57b4691e1913090964cf9cc3c48fc35b6086d2c8..a9d8ba8253f919493cdb0249b90db3ecdd8860e8 100644 (file)
@@ -114,9 +114,6 @@ Value ClusterEvents::CheckResultAPIHandler(const MessageOrigin::Ptr& origin, con
                return Empty;
        }
 
-       if (!params)
-               return Empty;
-
        CheckResult::Ptr cr;
        Array::Ptr vperf;
 
@@ -220,9 +217,6 @@ Value ClusterEvents::NextCheckChangedAPIHandler(const MessageOrigin::Ptr& origin
                return Empty;
        }
 
-       if (!params)
-               return Empty;
-
        Host::Ptr host = Host::GetByName(params->Get("host"));
 
        if (!host)
@@ -284,9 +278,6 @@ Value ClusterEvents::NextNotificationChangedAPIHandler(const MessageOrigin::Ptr&
                return Empty;
        }
 
-       if (!params)
-               return Empty;
-
        Notification::Ptr notification = Notification::GetByName(params->Get("notification"));
 
        if (!notification)
@@ -344,9 +335,6 @@ Value ClusterEvents::ForceNextCheckChangedAPIHandler(const MessageOrigin::Ptr& o
                return Empty;
        }
 
-       if (!params)
-               return Empty;
-
        Host::Ptr host = Host::GetByName(params->Get("host"));
 
        if (!host)
@@ -409,9 +397,6 @@ Value ClusterEvents::ForceNextNotificationChangedAPIHandler(const MessageOrigin:
                return Empty;
        }
 
-       if (!params)
-               return Empty;
-
        Host::Ptr host = Host::GetByName(params->Get("host"));
 
        if (!host)
@@ -480,9 +465,6 @@ Value ClusterEvents::AcknowledgementSetAPIHandler(const MessageOrigin::Ptr& orig
                return Empty;
        }
 
-       if (!params)
-               return Empty;
-
        Host::Ptr host = Host::GetByName(params->Get("host"));
 
        if (!host)
@@ -546,9 +528,6 @@ Value ClusterEvents::AcknowledgementClearedAPIHandler(const MessageOrigin::Ptr&
                return Empty;
        }
 
-       if (!params)
-               return Empty;
-
        Host::Ptr host = Host::GetByName(params->Get("host"));
 
        if (!host)
@@ -717,9 +696,6 @@ Value ClusterEvents::SendNotificationsAPIHandler(const MessageOrigin::Ptr& origi
                return Empty;
        }
 
-       if (!params)
-               return Empty;
-
        Host::Ptr host = Host::GetByName(params->Get("host"));
 
        if (!host)
@@ -811,9 +787,6 @@ Value ClusterEvents::NotificationSentUserAPIHandler(const MessageOrigin::Ptr& or
                return Empty;
        }
 
-       if (!params)
-               return Empty;
-
        Host::Ptr host = Host::GetByName(params->Get("host"));
 
        if (!host)
@@ -927,9 +900,6 @@ Value ClusterEvents::NotificationSentToAllUsersAPIHandler(const MessageOrigin::P
                return Empty;
        }
 
-       if (!params)
-               return Empty;
-
        Host::Ptr host = Host::GetByName(params->Get("host"));
 
        if (!host)
index 048d6c1c1e5cd933d43fc17533c6464a34dd512c..5a76524e249a29e46e1616bddd71c0d9d43f3d3f 100644 (file)
@@ -40,9 +40,6 @@ REGISTER_APIFUNCTION(UpdateCertificate, pki, &UpdateCertificateHandler);
 
 Value RequestCertificateHandler(const MessageOrigin::Ptr& origin, const Dictionary::Ptr& params)
 {
-       if (!params)
-               return Empty;
-
        String certText = params->Get("cert_request");
 
        boost::shared_ptr<X509> cert;
index e6cd9a3c899d5ee1058697c272ff4ac4bcade2de..0be3fb46eb624d318af22921eaa293b0c6d40102 100644 (file)
@@ -212,7 +212,11 @@ void JsonRpcConnection::MessageHandler(const String& jsonString)
                        Log(LogNotice, "JsonRpcConnection")
                            << "Call to non-existent function '" << method << "' from endpoint '" << m_Identity << "'.";
                } else {
-                       resultMessage->Set("result", afunc->Invoke(origin, message->Get("params")));
+                       Dictionary::Ptr params = message->Get("params");
+                       if (params)
+                               resultMessage->Set("result", afunc->Invoke(origin, params));
+                       else
+                               resultMessage->Set("result", Empty);
                }
        } catch (const std::exception& ex) {
                /* TODO: Add a user readable error message for the remote caller */
@@ -274,9 +278,6 @@ void JsonRpcConnection::DataAvailableHandler(void)
 
 Value SetLogPositionHandler(const MessageOrigin::Ptr& origin, const Dictionary::Ptr& params)
 {
-       if (!params)
-               return Empty;
-
        double log_position = params->Get("log_position");
        Endpoint::Ptr endpoint = origin->FromClient->GetEndpoint();