From 339f25a84b8f9e89a19b946dbb4365e22174790b Mon Sep 17 00:00:00 2001 From: "Zheng, Qi" Date: Fri, 17 Sep 2021 14:54:05 +0800 Subject: [PATCH] Fix dangling buffer pointer bug in dcap demo Signed-off-by: Zheng, Qi --- .../dcap/dcap_lib/examples/dcap_test.rs | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/demos/remote_attestation/dcap/dcap_lib/examples/dcap_test.rs b/demos/remote_attestation/dcap/dcap_lib/examples/dcap_test.rs index ecf24919..ed469bae 100644 --- a/demos/remote_attestation/dcap/dcap_lib/examples/dcap_test.rs +++ b/demos/remote_attestation/dcap/dcap_lib/examples/dcap_test.rs @@ -8,10 +8,10 @@ use sgx_types::{ struct DcapDemo { dcap_quote: DcapQuote, quote_size: u32, - quote_buf_ptr: *mut u8, + quote_buf: Vec, req_data: sgx_report_data_t, supplemental_size: u32, - suppl_buf_ptr: *mut u8, + suppl_buf: Vec } impl DcapDemo { @@ -19,10 +19,8 @@ impl DcapDemo { let mut dcap = DcapQuote::new(); let quote_size = dcap.get_quote_size(); let supplemental_size = dcap.get_supplemental_data_size(); - let mut quote_buf: Vec = vec![0; quote_size as usize]; - let quote_ptr = quote_buf.as_mut_ptr(); - let mut suppl_buf: Vec = vec![0; supplemental_size as usize]; - let suppl_ptr = suppl_buf.as_mut_ptr(); + let quote_buf: Vec = vec![0; quote_size as usize]; + let suppl_buf: Vec = vec![0; supplemental_size as usize]; let mut req_data = sgx_report_data_t::default(); //fill in the report data array @@ -33,15 +31,15 @@ impl DcapDemo { Self { dcap_quote: dcap, quote_size: quote_size, - quote_buf_ptr: quote_ptr, + quote_buf: quote_buf, req_data: req_data, supplemental_size: supplemental_size, - suppl_buf_ptr: suppl_ptr + suppl_buf: suppl_buf } } fn dcap_quote_gen(&mut self) -> Result { - 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"); @@ -49,7 +47,7 @@ impl DcapDemo { } 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) }; Ok(report_body) @@ -67,12 +65,12 @@ impl DcapDemo { let mut status = 1; let mut verify_arg = IoctlVerDCAPQuoteArg { - quote_buf: self.quote_buf_ptr, + quote_buf: self.quote_buf.as_mut_ptr(), quote_size: self.quote_size, collateral_expiration_status: &mut status, quote_verification_result: &mut quote_verification_result, 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();