Fix dangling buffer pointer bug in dcap demo
Signed-off-by: Zheng, Qi <huaiqing.zq@antgroup.com>
This commit is contained in:
parent
663fc7273a
commit
339f25a84b
@ -8,10 +8,10 @@ use sgx_types::{
|
|||||||
struct DcapDemo {
|
struct DcapDemo {
|
||||||
dcap_quote: DcapQuote,
|
dcap_quote: DcapQuote,
|
||||||
quote_size: u32,
|
quote_size: u32,
|
||||||
quote_buf_ptr: *mut u8,
|
quote_buf: Vec<u8>,
|
||||||
req_data: sgx_report_data_t,
|
req_data: sgx_report_data_t,
|
||||||
supplemental_size: u32,
|
supplemental_size: u32,
|
||||||
suppl_buf_ptr: *mut u8,
|
suppl_buf: Vec<u8>
|
||||||
}
|
}
|
||||||
|
|
||||||
impl DcapDemo {
|
impl DcapDemo {
|
||||||
@ -19,10 +19,8 @@ impl DcapDemo {
|
|||||||
let mut dcap = DcapQuote::new();
|
let mut dcap = DcapQuote::new();
|
||||||
let quote_size = dcap.get_quote_size();
|
let quote_size = dcap.get_quote_size();
|
||||||
let supplemental_size = dcap.get_supplemental_data_size();
|
let supplemental_size = dcap.get_supplemental_data_size();
|
||||||
let mut quote_buf: Vec<u8> = vec![0; quote_size as usize];
|
let quote_buf: Vec<u8> = vec![0; quote_size as usize];
|
||||||
let quote_ptr = quote_buf.as_mut_ptr();
|
let suppl_buf: Vec<u8> = vec![0; supplemental_size as usize];
|
||||||
let mut suppl_buf: Vec<u8> = vec![0; supplemental_size as usize];
|
|
||||||
let suppl_ptr = suppl_buf.as_mut_ptr();
|
|
||||||
let mut req_data = sgx_report_data_t::default();
|
let mut req_data = sgx_report_data_t::default();
|
||||||
|
|
||||||
//fill in the report data array
|
//fill in the report data array
|
||||||
@ -33,15 +31,15 @@ impl DcapDemo {
|
|||||||
Self {
|
Self {
|
||||||
dcap_quote: dcap,
|
dcap_quote: dcap,
|
||||||
quote_size: quote_size,
|
quote_size: quote_size,
|
||||||
quote_buf_ptr: quote_ptr,
|
quote_buf: quote_buf,
|
||||||
req_data: req_data,
|
req_data: req_data,
|
||||||
supplemental_size: supplemental_size,
|
supplemental_size: supplemental_size,
|
||||||
suppl_buf_ptr: suppl_ptr
|
suppl_buf: suppl_buf
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn dcap_quote_gen(&mut self) -> Result<i32, &'static str> {
|
fn dcap_quote_gen(&mut self) -> Result<i32, &'static str> {
|
||||||
self.dcap_quote.generate_quote(self.quote_buf_ptr, &mut self.req_data).unwrap();
|
self.dcap_quote.generate_quote(self.quote_buf.as_mut_ptr(), &mut self.req_data).unwrap();
|
||||||
|
|
||||||
println!("DCAP generate quote successfully");
|
println!("DCAP generate quote successfully");
|
||||||
|
|
||||||
@ -49,7 +47,7 @@ impl DcapDemo {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn dcap_quote_get_report_body(&mut self) -> Result<*const sgx_report_body_t, &'static str> {
|
fn dcap_quote_get_report_body(&mut self) -> Result<*const sgx_report_body_t, &'static str> {
|
||||||
let quote3: *mut sgx_quote3_t = self.quote_buf_ptr as *mut sgx_quote3_t;
|
let quote3: *mut sgx_quote3_t = self.quote_buf.as_mut_ptr() as *mut sgx_quote3_t;
|
||||||
let report_body = unsafe { &((*quote3).report_body) };
|
let report_body = unsafe { &((*quote3).report_body) };
|
||||||
|
|
||||||
Ok(report_body)
|
Ok(report_body)
|
||||||
@ -67,12 +65,12 @@ impl DcapDemo {
|
|||||||
let mut status = 1;
|
let mut status = 1;
|
||||||
|
|
||||||
let mut verify_arg = IoctlVerDCAPQuoteArg {
|
let mut verify_arg = IoctlVerDCAPQuoteArg {
|
||||||
quote_buf: self.quote_buf_ptr,
|
quote_buf: self.quote_buf.as_mut_ptr(),
|
||||||
quote_size: self.quote_size,
|
quote_size: self.quote_size,
|
||||||
collateral_expiration_status: &mut status,
|
collateral_expiration_status: &mut status,
|
||||||
quote_verification_result: &mut quote_verification_result,
|
quote_verification_result: &mut quote_verification_result,
|
||||||
supplemental_data_size: self.supplemental_size,
|
supplemental_data_size: self.supplemental_size,
|
||||||
supplemental_data: self.suppl_buf_ptr,
|
supplemental_data: self.suppl_buf.as_mut_ptr(),
|
||||||
};
|
};
|
||||||
|
|
||||||
self.dcap_quote.verify_quote(&mut verify_arg).unwrap();
|
self.dcap_quote.verify_quote(&mut verify_arg).unwrap();
|
||||||
|
Loading…
Reference in New Issue
Block a user