]> 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>
Wed, 21 Feb 2018 12:47:46 +0000 (13:47 +0100)
lib/icinga/clusterevents.cpp
lib/remote/jsonrpcconnection-pki.cpp
lib/remote/jsonrpcconnection.cpp

index 9ae894db1bcd276c7879edc4e98e606deb255c16..e892caabfc955326fe564427a7891bbb2a5209d7 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)
@@ -612,9 +591,6 @@ Value ClusterEvents::SendNotificationsAPIHandler(const MessageOrigin::Ptr& origi
                return Empty;
        }
 
-       if (!params)
-               return Empty;
-
        Host::Ptr host = Host::GetByName(params->Get("host"));
 
        if (!host)
@@ -706,9 +682,6 @@ Value ClusterEvents::NotificationSentUserAPIHandler(const MessageOrigin::Ptr& or
                return Empty;
        }
 
-       if (!params)
-               return Empty;
-
        Host::Ptr host = Host::GetByName(params->Get("host"));
 
        if (!host)
@@ -822,9 +795,6 @@ Value ClusterEvents::NotificationSentToAllUsersAPIHandler(const MessageOrigin::P
                return Empty;
        }
 
-       if (!params)
-               return Empty;
-
        Host::Ptr host = Host::GetByName(params->Get("host"));
 
        if (!host)
index 31fa9078ac8de49fd6f9171ab616fc9e1d24668e..80740ac3132fdd08d35f19700e5a9f7bf20cb097 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");
 
        std::shared_ptr<X509> cert;
index 574cb007fb49c9e654fa18ea5c8316e7ba6da094..c1895934c016027b6a8a1edf3612970c33888022 100644 (file)
@@ -225,7 +225,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 */
@@ -287,9 +291,6 @@ void JsonRpcConnection::DataAvailableHandler()
 
 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();