Index: lib/libefivar/efivar-dp-parse.c =================================================================== --- lib/libefivar/efivar-dp-parse.c +++ lib/libefivar/efivar-dp-parse.c @@ -1233,6 +1233,7 @@ CHAR16 *WWNStr; CHAR16 *LunStr; FIBRECHANNELEX_DEVICE_PATH *FibreEx; + UINT64 tmp; WWNStr = GetNextParamStr (&TextDeviceNode); LunStr = GetNextParamStr (&TextDeviceNode); @@ -1243,11 +1244,14 @@ ); FibreEx->Reserved = 0; - Strtoi64 (WWNStr, (UINT64 *) (&FibreEx->WWN)); - Strtoi64 (LunStr, (UINT64 *) (&FibreEx->Lun)); - *(UINT64 *) (&FibreEx->WWN) = SwapBytes64 (*(UINT64 *) (&FibreEx->WWN)); - *(UINT64 *) (&FibreEx->Lun) = SwapBytes64 (*(UINT64 *) (&FibreEx->Lun)); + Strtoi64 (WWNStr, &tmp); + tmp = SwapBytes64 (tmp); + memcpy (&FibreEx->WWN, &tmp, sizeof (tmp)); + + Strtoi64 (LunStr, &tmp); + tmp = SwapBytes64 (tmp); + memcpy (&FibreEx->Lun, &tmp, sizeof (tmp)); return (EFI_DEVICE_PATH_PROTOCOL *) FibreEx; }