mirror of
https://github.com/fergalmoran/ladybird.git
synced 2026-01-07 09:04:30 +00:00
Kernel/FATFS: Avoid creating reference bindings to packed struct members
dbgln() will always take its arguments by reference when possible, which causes UB when dealing with packed structs. To avoid this, we now explicitly copy all members whose alignment requirements aren't met.
This commit is contained in:
committed by
Tim Schumacher
parent
23d683cf6b
commit
b1af97810e
@@ -122,11 +122,11 @@ ErrorOr<void> FATFS::initialize_while_locked()
|
||||
|
||||
if constexpr (FAT_DEBUG) {
|
||||
dbgln("FATFS: oem_identifier: {}", block->oem_identifier);
|
||||
dbgln("FATFS: bytes_per_sector: {}", block->bytes_per_sector);
|
||||
dbgln("FATFS: bytes_per_sector: {}", static_cast<u16>(block->bytes_per_sector));
|
||||
dbgln("FATFS: sectors_per_cluster: {}", block->sectors_per_cluster);
|
||||
dbgln("FATFS: reserved_sector_count: {}", block->reserved_sector_count);
|
||||
dbgln("FATFS: fat_count: {}", block->fat_count);
|
||||
dbgln("FATFS: root_directory_entry_count: {}", block->root_directory_entry_count);
|
||||
dbgln("FATFS: root_directory_entry_count: {}", static_cast<u16>(block->root_directory_entry_count));
|
||||
dbgln("FATFS: media_descriptor_type: {}", block->media_descriptor_type);
|
||||
dbgln("FATFS: sectors_per_track: {}", block->sectors_per_track);
|
||||
dbgln("FATFS: head_count: {}", block->head_count);
|
||||
@@ -144,7 +144,7 @@ ErrorOr<void> FATFS::initialize_while_locked()
|
||||
dbgln("FATFS: fs_info_sector: {}", dos7_boot_record->fs_info_sector);
|
||||
dbgln("FATFS: backup_boot_sector: {}", dos7_boot_record->backup_boot_sector);
|
||||
dbgln("FATFS: drive_number: {}", dos7_boot_record->drive_number);
|
||||
dbgln("FATFS: volume_id: {}", dos7_boot_record->volume_id);
|
||||
dbgln("FATFS: volume_id: {}", static_cast<u32>(dos7_boot_record->volume_id));
|
||||
} else if (ebpb_version == DOSBIOSParameterBlockVersion::DOS_BPB_3 || ebpb_version == DOSBIOSParameterBlockVersion::DOS_BPB_4) {
|
||||
DOS4BIOSParameterBlock const* dos4_boot_record = ebpb.dos4_bpb();
|
||||
if (ebpb_version == DOSBIOSParameterBlockVersion::DOS_BPB_3) {
|
||||
@@ -154,7 +154,7 @@ ErrorOr<void> FATFS::initialize_while_locked()
|
||||
}
|
||||
dbgln("FATFS: drive_number: {}", dos4_boot_record->drive_number);
|
||||
dbgln("FATFS: flags: {}", dos4_boot_record->flags);
|
||||
dbgln("FATFS: volume_id: {}", dos4_boot_record->volume_id);
|
||||
dbgln("FATFS: volume_id: {}", static_cast<u32>(dos4_boot_record->volume_id));
|
||||
|
||||
// volume_label_string and file_system_type are only valid when
|
||||
// ebpb_version == DOSBIOSParameterBlockVersion::DOS4.
|
||||
|
||||
Reference in New Issue
Block a user