From acaa1b9f464fa4315f9dfaa82b692ddf2e5aeb76 Mon Sep 17 00:00:00 2001 From: Paul Pan Date: Mon, 17 Jun 2024 00:42:23 +0800 Subject: [PATCH] fix: kernel: cnode: use checked shift right when matching guard --- kernel/src/objects/cnode.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/kernel/src/objects/cnode.rs b/kernel/src/objects/cnode.rs index d8668c9..fd4303a 100644 --- a/kernel/src/objects/cnode.rs +++ b/kernel/src/objects/cnode.rs @@ -108,7 +108,8 @@ impl<'a> CNodeCap<'a> { }); } - let get_guard = || (cap_ptr >> (bits_remaining - guard_bits)) & MASK!(guard_bits); + let get_guard = + || cap_ptr.checked_shr((bits_remaining - guard_bits) as u32).unwrap_or_default() & MASK!(guard_bits); if guard_bits > bits_remaining || get_guard() != cap_guard { return Err(LookupFailure::GuardMismatch { bits_left: bits_remaining,