
31 Jul
2024
31 Jul
'24
12:16 p.m.
/* Make little endian */
tmp32 = (uint32_t *)&guid->b[0];
*tmp32 = be32_to_cpu(*tmp32);
tmp16 = (uint16_t *)&guid->b[4];
*tmp16 = be16_to_cpu(*tmp16);
tmp16 = (uint16_t *)&guid->b[6];
*tmp16 = be16_to_cpu(*tmp16);
you need to explicitly convert those to LE, instead of relying to the native cpu endianess here
The EFI spec iirc is not explicit on the binary format for GUIDs on big endian systems (and currently doesn't support them at all??). Is LE always correct??
cheers /Ilias
+}
- #if defined(CONFIG_RANDOM_UUID) || defined(CONFIG_CMD_UUID) void gen_rand_uuid(unsigned char *uuid_bin) { u32 ptr[4];
@@ -394,15 +444,9 @@ void gen_rand_uuid(unsigned char *uuid_bin) /* Set all fields randomly */ for (i = 0; i < 4; i++) ptr[i] = rand();
clrsetbits_be16(&uuid->time_hi_and_version,
UUID_VERSION_MASK,
UUID_VERSION << UUID_VERSION_SHIFT);
clrsetbits_8(&uuid->clock_seq_hi_and_reserved,
UUID_VARIANT_MASK,
UUID_VARIANT << UUID_VARIANT_SHIFT);
configure_uuid(uuid, UUID_VERSION); memcpy(uuid_bin, uuid, 16);
}
-- 2.45.2
--
// Caleb (they/them)