From 221c90c39a5cbd4ed71211b47af80f967c4575c3 Mon Sep 17 00:00:00 2001 From: Matthew Barth Date: Fri, 15 Feb 2019 10:35:50 -0600 Subject: Verify mode provided is supported Before updating the current mode, verify that the mode provided by the end-user is in the list of modes that are supported. Tested: Only supported modes can be set as the current mode Change-Id: Ie21839b6bf7245756fedf417e143c28bc9da32f1 Signed-off-by: Matthew Barth --- control/zone.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/control/zone.cpp b/control/zone.cpp index 0278de8..6efbe73 100644 --- a/control/zone.cpp +++ b/control/zone.cpp @@ -643,7 +643,17 @@ std::string Zone::current(std::string value) auto current = ThermalObject::current(); std::transform(value.begin(), value.end(), value.begin(), toupper); - if (value != current) + auto supported = ThermalObject::supported(); + auto isSupported = std::any_of( + supported.begin(), + supported.end(), + [&value](auto& s) + { + std::transform(s.begin(), s.end(), s.begin(), toupper); + return value == s; + }); + + if (value != current && isSupported) { current = ThermalObject::current(value); saveCurrentMode(); -- cgit v1.2.1