Skip to content

Commit a04fa80

Browse files
committed
fat: Don't reference packed fields
This is undefined behaviour: rust-lang/rust#46043 Fixes: #70 Signed-off-by: Rob Bradford <robert.bradford@intel.com>
1 parent 3420f2f commit a04fa80

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

src/fat.rs

+9-3
Original file line numberDiff line numberDiff line change
@@ -209,12 +209,18 @@ impl<'a> Directory<'a> {
209209
let lfn_seq = ((lfns[i].seq & 0x1f) as usize) - 1;
210210
let lfn_block = &mut long_entry[lfn_seq * 13..(lfn_seq + 1) * 13];
211211

212+
// Need explicit copy to avoid borrowing packed structure
213+
let name = lfns[i].name;
212214
let s = &mut lfn_block[0..5];
213-
s.copy_from_slice(unsafe { &lfns[i].name[..] });
215+
s.copy_from_slice(&name);
216+
217+
let name2 = lfns[i].name2;
214218
let s = &mut lfn_block[5..11];
215-
s.copy_from_slice(unsafe { &lfns[i].name2[..] });
219+
s.copy_from_slice(&name2);
220+
221+
let name3 = lfns[i].name3;
216222
let s = &mut lfn_block[11..13];
217-
s.copy_from_slice(unsafe { &lfns[i].name3[..] });
223+
s.copy_from_slice(&name3);
218224

219225
continue;
220226
}

0 commit comments

Comments
 (0)