]> granicus.if.org Git - icinga2/commitdiff
API: Improve error handling for 'schedule-downtime' action 7271/head
authorMichael Friedrich <michael.friedrich@icinga.com>
Tue, 2 Jul 2019 09:15:43 +0000 (11:15 +0200)
committerMichael Friedrich <michael.friedrich@icinga.com>
Tue, 2 Jul 2019 09:15:43 +0000 (11:15 +0200)
lib/icinga/apiactions.cpp

index 757b37eca68144bbaeaceefbf33a017f249053f9..9d7edbcc6f3b11cddb9d7b497b6650e36cebb250 100644 (file)
@@ -337,6 +337,16 @@ Dictionary::Ptr ApiActions::ScheduleDowntime(const ConfigObject::Ptr& object,
        String comment = HttpUtility::GetLastParameter(params, "comment");
        double startTime = HttpUtility::GetLastParameter(params, "start_time");
        double endTime = HttpUtility::GetLastParameter(params, "end_time");
+       double now = Utility::GetTime();
+
+       if (author.IsEmpty() || comment.IsEmpty())
+               return ApiActions::CreateResult(400, "Options 'author' and 'comment' must not be empty");
+
+       if (startTime < now || endTime < now)
+               return ApiActions::CreateResult(400, "Options 'start_time' and 'end_time' must be greater than current timestamp");
+
+       if (endTime < startTime)
+               return ApiActions::CreateResult(400, "Option 'end_time' must be greater than 'start_time'");
 
        Host::Ptr host;
        Service::Ptr service;