hyperlight_guest/
host_error.rs1use core::ffi::c_void;
18use core::slice::from_raw_parts;
19
20use hyperlight_common::flatbuffer_wrappers::guest_error::{ErrorCode, GuestError};
21
22use crate::P_PEB;
23
24pub(crate) fn check_for_host_error() {
25 unsafe {
26 let peb_ptr = P_PEB.unwrap();
27 let guest_error_buffer_ptr = (*peb_ptr).guestErrorData.guestErrorBuffer as *mut u8;
28 let guest_error_buffer_size = (*peb_ptr).guestErrorData.guestErrorSize as usize;
29
30 let guest_error_buffer = from_raw_parts(guest_error_buffer_ptr, guest_error_buffer_size);
31
32 if !guest_error_buffer.is_empty() {
33 let guest_error = GuestError::try_from(guest_error_buffer).expect("Invalid GuestError");
34 if guest_error.code != ErrorCode::NoError {
35 (*peb_ptr).outputdata.outputDataBuffer = usize::MAX as *mut c_void;
36 panic!(
37 "Guest Error: {:?} - {}",
38 guest_error.code, guest_error.message
39 );
40 }
41 }
42 }
43}