diff options
Diffstat (limited to 'src/udev/ata_id/ata_id.c')
-rw-r--r-- | src/udev/ata_id/ata_id.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/udev/ata_id/ata_id.c b/src/udev/ata_id/ata_id.c index 7760d248cf..0b1f0b7157 100644 --- a/src/udev/ata_id/ata_id.c +++ b/src/udev/ata_id/ata_id.c @@ -30,6 +30,7 @@ #include "main-func.h" #include "memory-util.h" #include "udev-util.h" +#include "unaligned.h" #define COMMAND_TIMEOUT_MSEC (30 * 1000) @@ -271,15 +272,15 @@ static void disk_identify_fixup_string( uint8_t identify[512], unsigned offset_words, size_t len) { + assert(offset_words < 512/2); disk_identify_get_string(identify, offset_words, (char *) identify + offset_words * 2, len); } -static void disk_identify_fixup_uint16 (uint8_t identify[512], unsigned offset_words) { - uint16_t *p; - - p = (uint16_t *) identify; - p[offset_words] = le16toh (p[offset_words]); +static void disk_identify_fixup_uint16(uint8_t identify[512], unsigned offset_words) { + assert(offset_words < 512/2); + unaligned_write_ne16(identify + offset_words * 2, + unaligned_read_le16(identify + offset_words * 2)); } /** |