From b7b4ab33ae16ae6b29a73758032af8834925ff5f Mon Sep 17 00:00:00 2001 From: Vladimir 'phcoder' Serbinenko Date: Wed, 6 Jun 2012 12:22:32 +0200 Subject: [PATCH] * grub-core/commands/hdparm.c (le16_to_char): Always byte-swap strings. (grub_ata_strncpy): Likewise. (grub_ata_identify): Add missing byteswaps. --- ChangeLog | 6 ++++++ grub-core/commands/hdparm.c | 2 +- grub-core/disk/ata.c | 14 +++++++------- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 103805611..382759ffe 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2012-06-06 Vladimir Serbinenko + + * 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 * grub-core/term/i386/pc/vga_text.c (screen_write_char): Add missing diff --git a/grub-core/commands/hdparm.c b/grub-core/commands/hdparm.c index f97a90449..3fb08912d 100644 --- a/grub-core/commands/hdparm.c +++ b/grub-core/commands/hdparm.c @@ -169,7 +169,7 @@ le16_to_char (grub_uint16_t *dest, const grub_uint16_t * src16, unsigned bytes) { unsigned i; for (i = 0; i < bytes / 2; i++) - dest[i] = grub_be_to_cpu16 (src16[i]); + dest[i] = grub_swap_bytes16 (src16[i]); dest[i] = 0; return (char *) dest; } diff --git a/grub-core/disk/ata.c b/grub-core/disk/ata.c index 4555147c7..c0d378c1a 100644 --- a/grub-core/disk/ata.c +++ b/grub-core/disk/ata.c @@ -34,7 +34,7 @@ grub_ata_strncpy (grub_uint16_t *dst16, grub_uint16_t *src16, grub_size_t len) unsigned int i; for (i = 0; i < len / 2; i++) - *(dst16++) = grub_be_to_cpu16 (*(src16++)); + *(dst16++) = grub_swap_bytes16 (*(src16++)); *dst16 = 0; } @@ -156,10 +156,10 @@ grub_ata_identify (struct grub_ata *dev) 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; @@ -171,7 +171,7 @@ grub_ata_identify (struct grub_ata *dev) 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])); @@ -187,9 +187,9 @@ grub_ata_identify (struct grub_ata *dev) 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);