From: Jethro Beekman Date: Thu, 11 Apr 2019 02:46:29 +0000 (-0700) Subject: SGX target: don't unwind on usercall index out of bounds X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=7e624ce2c2f5196a94178ce7dd62173526ff6839;p=rust.git SGX target: don't unwind on usercall index out of bounds --- diff --git a/src/libstd/sys/sgx/abi/usercalls/alloc.rs b/src/libstd/sys/sgx/abi/usercalls/alloc.rs index 22ae2a8e07d..38e05f6fd27 100644 --- a/src/libstd/sys/sgx/abi/usercalls/alloc.rs +++ b/src/libstd/sys/sgx/abi/usercalls/alloc.rs @@ -523,7 +523,11 @@ impl> Index for UserRef<[T]> where [T]: UserSafe, I::Ou #[inline] fn index(&self, index: I) -> &UserRef { unsafe { - UserRef::from_ptr(index.index(&*self.as_raw_ptr())) + if let Some(slice) = index.get(&*self.as_raw_ptr()) { + UserRef::from_ptr(slice) + } else { + rtabort!("index out of range for user slice"); + } } } } @@ -533,7 +537,11 @@ impl> IndexMut for UserRef<[T]> where [T]: UserSafe, I: #[inline] fn index_mut(&mut self, index: I) -> &mut UserRef { unsafe { - UserRef::from_mut_ptr(index.index_mut(&mut*self.as_raw_mut_ptr())) + if let Some(slice) = index.get_mut(&mut*self.as_raw_mut_ptr()) { + UserRef::from_mut_ptr(slice) + } else { + rtabort!("index out of range for user slice"); + } } } }