+2012-06-06 Vladimir Serbinenko <phcoder@gmail.com>
+
+ * grub-core/commands/hdparm.c (le16_to_char): Always byte-swap strings.
+ (grub_ata_strncpy): Likewise.
+ (grub_ata_identify): Add missing byteswaps.
+
2012-06-06 Vladimir Serbinenko <phcoder@gmail.com>
* grub-core/term/i386/pc/vga_text.c (screen_write_char): Add missing
unsigned int i;
for (i = 0; i < len / 2; i++)
- *(dst16++) = grub_be_to_cpu16 (*(src16++));
+ *(dst16++) = grub_swap_bytes16 (*(src16++));
*dst16 = 0;
}
dev->addr = GRUB_ATA_CHS;
/* Check if LBA is supported. */
- if (info16[49] & (1 << 9))
+ if (info16[49] & grub_cpu_to_le16_compile_time ((1 << 9)))
{
/* Check if LBA48 is supported. */
- if (info16[83] & (1 << 10))
+ if (info16[83] & grub_cpu_to_le16_compile_time ((1 << 10)))
dev->addr = GRUB_ATA_LBA48;
else
dev->addr = GRUB_ATA_LBA;
else
dev->size = grub_le_to_cpu64 (info64[25]);
- if (info16[106] & (1 << 12))
+ if (info16[106] & grub_cpu_to_le16_compile_time ((1 << 12)))
{
grub_uint32_t secsize;
secsize = grub_le_to_cpu32 (grub_get_unaligned32 (&info16[117]));
dev->log_sector_size = 9;
/* Read CHS information. */
- dev->cylinders = info16[1];
- dev->heads = info16[3];
- dev->sectors_per_track = info16[6];
+ dev->cylinders = grub_le_to_cpu16 (info16[1]);
+ dev->heads = grub_le_to_cpu16 (info16[3]);
+ dev->sectors_per_track = grub_le_to_cpu16 (info16[6]);
grub_ata_dumpinfo (dev, info16);