Fix read_at() in SEFS if offset beyond the end of the file
This commit is contained in:
		
							parent
							
								
									bd56504b20
								
							
						
					
					
						commit
						76b90efa8f
					
				| @ -172,6 +172,14 @@ impl File for LockedFile { | ||||
|             return Ok(0); | ||||
|         } | ||||
|         let mut file = self.0.lock().unwrap(); | ||||
| 
 | ||||
|         // SgxFile does not support to seek a position beyond the end.
 | ||||
|         // So check if file_size < offset and return zero(indicates end of file).
 | ||||
|         let file_size = file.seek(SeekFrom::End(0)).expect("failed to tell SgxFile") as usize; | ||||
|         if file_size < offset { | ||||
|             return Ok(0); | ||||
|         } | ||||
| 
 | ||||
|         let offset = offset as u64; | ||||
|         file.seek(SeekFrom::Start(offset)) | ||||
|             .expect("failed to seek SgxFile"); | ||||
| @ -185,8 +193,8 @@ impl File for LockedFile { | ||||
|         } | ||||
|         let mut file = self.0.lock().unwrap(); | ||||
| 
 | ||||
|         // SgxFile do not support seek a position after the end.
 | ||||
|         // So check the size and padding zeros if necessary.
 | ||||
|         // SgxFile does not support to seek a position beyond the end.
 | ||||
|         // So check if file_size < offset and padding null bytes.
 | ||||
|         let file_size = file.seek(SeekFrom::End(0)).expect("failed to tell SgxFile") as usize; | ||||
|         if file_size < offset { | ||||
|             static ZEROS: [u8; 0x1000] = [0; 0x1000]; | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user