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