summaryrefslogtreecommitdiff
path: root/src/numeric.ml
diff options
context:
space:
mode:
authorDaniil Baturin <daniil@baturin.org>2022-05-10 15:04:28 +0300
committerDaniil Baturin <daniil@baturin.org>2022-05-10 15:04:28 +0300
commit4aa302a05fad95f3d13eb2ff20bbfee88c32e7ff (patch)
treeb73f26786d52f25aee8e2334f45a3538bd8337c3 /src/numeric.ml
parent5bbda46493d0c11c8a90e50a68c9788a7488345e (diff)
downloadvyos-utils-4aa302a05fad95f3d13eb2ff20bbfee88c32e7ff.tar.gz
vyos-utils-4aa302a05fad95f3d13eb2ff20bbfee88c32e7ff.zip
T4421: only allow numbers that look like an integer part with an optional fractional part
Diffstat (limited to 'src/numeric.ml')
-rw-r--r--src/numeric.ml5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/numeric.ml b/src/numeric.ml
index ab59d6c..b296cec 100644
--- a/src/numeric.ml
+++ b/src/numeric.ml
@@ -35,7 +35,12 @@ let check_positive opts n =
if opts.positive && (n <= 0.0) then
failwith "Number should be positive"
+let looks_like_number value =
+ try let _ = Pcre.exec ~pat:"^(\\-?)[0-9]+(\\.[0-9]+)?$" value in true
+ with Not_found -> false
+
let number_of_string opts s =
+ if not (looks_like_number s) then Printf.ksprintf failwith "'%s' is not a valid number" s else
let n = float_of_string_opt s in
match n with
| Some n ->