From 8ca38302fceeb05f99c703e1e66b234de996cbd5 Mon Sep 17 00:00:00 2001 From: Michael Friedrich Date: Tue, 2 Jul 2019 11:15:43 +0200 Subject: [PATCH] API: Improve error handling for 'schedule-downtime' action --- lib/icinga/apiactions.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lib/icinga/apiactions.cpp b/lib/icinga/apiactions.cpp index 757b37eca..9d7edbcc6 100644 --- a/lib/icinga/apiactions.cpp +++ b/lib/icinga/apiactions.cpp @@ -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;