From 85146ca0a99779843a0f99723fc7a580a37bc742 Mon Sep 17 00:00:00 2001 From: Marco Costalba Date: Mon, 1 Feb 2010 14:06:59 +0100 Subject: [PATCH] Check bounds in set_option_value() Normally it's up to the GUI to check for option's limits, but we could receive the new value directly from the user by teminal window. So let's check the bounds anyway. No functional change. Signed-off-by: Marco Costalba --- src/ucioption.cpp | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/ucioption.cpp b/src/ucioption.cpp index 9fc1f41d..c326ce4f 100644 --- a/src/ucioption.cpp +++ b/src/ucioption.cpp @@ -292,10 +292,28 @@ void set_option_value(const string& name, const string& value) { else if (v == "false") v = "0"; - if (options.find(name) != options.end()) - options[name].currentValue = v; - else + if (options.find(name) == options.end()) + { std::cout << "No such option: " << name << std::endl; + return; + } + + // Normally it's up to the GUI to check for option's limits, + // but we could receive the new value directly from the user + // by teminal window. So let's check the bounds anyway. + Option& opt = options[name]; + + if (opt.type == CHECK && v != "0" && v != "1") + return; + + else if (opt.type == SPIN) + { + int val = atoi(v.c_str()); + if (val < opt.minValue || val > opt.maxValue) + return; + } + + opt.currentValue = v; }