From 4f07a48bed8a09ca550df9679910559557e86398 Mon Sep 17 00:00:00 2001 From: Andre Maroneze <andre.maroneze@cea.fr> Date: Wed, 7 Apr 2021 13:46:12 +0200 Subject: [PATCH] [Kernel] avoid crash in unroll pragma with large integer --- src/kernel_internals/typing/unroll_loops.ml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/kernel_internals/typing/unroll_loops.ml b/src/kernel_internals/typing/unroll_loops.ml index c60b1bb3b5a..e09cbae6a55 100644 --- a/src/kernel_internals/typing/unroll_loops.ml +++ b/src/kernel_internals/typing/unroll_loops.ml @@ -51,7 +51,14 @@ let update_info global_find_init emitter info spec = in let i = Logic_utils.constFoldTermToInt t in match i with - | Some i -> { info with unroll_number = Some (Integer.to_int i) } + | Some i -> + begin + match Integer.to_int_opt i with + | Some _ as unroll_number -> { info with unroll_number } + | None -> Kernel.abort ~current:true + "count too large in unrolling directive: %a" + (Integer.pretty ~hexa:false) i + end | None -> Kernel.warning ~once:true ~current:true "ignoring unrolling directive (not an understood constant \ -- GitLab