From d38631a724c1c6b0f38494624a20a7a6f4af66b0 Mon Sep 17 00:00:00 2001 From: Jamey Sharp Date: Wed, 9 Nov 2022 12:36:02 -0800 Subject: [PATCH] cranelift-isle: Don't panic on too-large rule priorities (#5236) Found with ISLE's fuzzer. --- cranelift/isle/isle/src/parser.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/cranelift/isle/isle/src/parser.rs b/cranelift/isle/isle/src/parser.rs index 347f27f3bd..6975777bee 100644 --- a/cranelift/isle/isle/src/parser.rs +++ b/cranelift/isle/isle/src/parser.rs @@ -390,7 +390,10 @@ impl<'a> Parser<'a> { fn parse_rule(&mut self) -> Result { let pos = self.pos(); let prio = if self.is_int() { - Some(self.int()?) + Some( + i64::try_from(self.int()?) + .map_err(|err| self.error(pos, format!("Invalid rule priority: {}", err)))?, + ) } else { None }; @@ -407,7 +410,7 @@ impl<'a> Parser<'a> { iflets, expr, pos, - prio: prio.map(|prio| i64::try_from(prio).unwrap()), + prio, }); } }