@@ -452,35 +452,35 @@ pub struct PcrEvent<'a> {
452
452
impl < ' a > PcrEvent < ' a > {
453
453
unsafe fn from_ptr ( ptr : * const u8 , header : EventLogHeader < ' a > ) -> Option < Self > {
454
454
let ptr_u32: * const u32 = ptr. cast ( ) ;
455
- let pcr_index = PcrIndex ( ptr_u32. read_unaligned ( ) ) ;
456
- let event_type = EventType ( ptr_u32. add ( 1 ) . read_unaligned ( ) ) ;
457
- let digests_count = ptr_u32. add ( 2 ) . read_unaligned ( ) ;
458
- let digests_ptr: * const u8 = ptr. add ( 12 ) ;
455
+ let pcr_index = PcrIndex ( unsafe { ptr_u32. read_unaligned ( ) } ) ;
456
+ let event_type = EventType ( unsafe { ptr_u32. add ( 1 ) . read_unaligned ( ) } ) ;
457
+ let digests_count = unsafe { ptr_u32. add ( 2 ) . read_unaligned ( ) } ;
458
+ let digests_ptr: * const u8 = unsafe { ptr. add ( 12 ) } ;
459
459
460
460
// Get the byte size of the digests so that the digests iterator
461
461
// can be safe code.
462
462
let mut digests_byte_size = 0 ;
463
463
let mut elem_ptr = digests_ptr;
464
464
for _ in 0 ..digests_count {
465
- let algorithm_id = AlgorithmId ( elem_ptr. cast :: < u16 > ( ) . read_unaligned ( ) ) ;
465
+ let algorithm_id = AlgorithmId ( unsafe { elem_ptr. cast :: < u16 > ( ) . read_unaligned ( ) } ) ;
466
466
let alg_and_digest_size = size_of :: < AlgorithmId > ( )
467
467
+ usize:: from ( header. algorithm_digest_sizes . get_size ( algorithm_id) ?) ;
468
468
digests_byte_size += alg_and_digest_size;
469
- elem_ptr = elem_ptr. add ( alg_and_digest_size) ;
469
+ elem_ptr = unsafe { elem_ptr. add ( alg_and_digest_size) } ;
470
470
}
471
471
472
- let digests = slice:: from_raw_parts ( digests_ptr, digests_byte_size) ;
473
- let event_size_ptr = digests_ptr. add ( digests_byte_size) ;
474
- let event_size = usize_from_u32 ( event_size_ptr. cast :: < u32 > ( ) . read_unaligned ( ) ) ;
475
- let event_data_ptr = event_size_ptr. add ( 4 ) ;
476
- let event_data = slice:: from_raw_parts ( event_data_ptr, event_size) ;
472
+ let digests = unsafe { slice:: from_raw_parts ( digests_ptr, digests_byte_size) } ;
473
+ let event_size_ptr = unsafe { digests_ptr. add ( digests_byte_size) } ;
474
+ let event_size = usize_from_u32 ( unsafe { event_size_ptr. cast :: < u32 > ( ) . read_unaligned ( ) } ) ;
475
+ let event_data_ptr = unsafe { event_size_ptr. add ( 4 ) } ;
476
+ let event_data = unsafe { slice:: from_raw_parts ( event_data_ptr, event_size) } ;
477
477
478
478
Some ( Self {
479
479
pcr_index,
480
480
event_type,
481
481
digests,
482
482
event_data,
483
- next : event_data_ptr. add ( event_size) ,
483
+ next : unsafe { event_data_ptr. add ( event_size) } ,
484
484
algorithm_digest_sizes : header. algorithm_digest_sizes ,
485
485
} )
486
486
}
0 commit comments