summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniil Baturin <daniil@baturin.org>2022-05-10 15:04:28 +0300
committerDaniil Baturin <daniil@baturin.org>2022-05-19 16:19:34 +0300
commit218be1f46204f21a9e22c1d98a73ded019bcbed1 (patch)
tree9ae9b382f5256b52cee36272d30b182ed88798e1
parentf0d5e978fa8de3f4c0a01989def0f83892104d00 (diff)
downloadvyos-utils-218be1f46204f21a9e22c1d98a73ded019bcbed1.tar.gz
vyos-utils-218be1f46204f21a9e22c1d98a73ded019bcbed1.zip
T4421: only allow numbers that look like an integer part with an optional fractional part
-rwxr-xr-xdebian/rules2
-rw-r--r--src/numeric.ml5
2 files changed, 6 insertions, 1 deletions
diff --git a/debian/rules b/debian/rules
index 4d3db35..c6e8920 100755
--- a/debian/rules
+++ b/debian/rules
@@ -8,7 +8,7 @@ DIR := debian/tmp
override_dh_auto_build:
eval `opam env`
mkdir -p _build
- ocamlfind ocamlopt -o _build/numeric src/numeric.ml
+ ocamlfind ocamlopt -o _build/numeric -package pcre -linkpkg src/numeric.ml
ocamlfind ocamlopt -o _build/validate-value -package pcre,unix,containers -linkpkg src/validate_value.ml
override_dh_auto_install:
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 ->