Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/gpt/libgpt.c

    r6453e306 r8cffdf5  
    707707}
    708708
    709 /** Generate a new pseudo-random UUID
    710  *
    711  * FIXME: This UUID generator is not compliant with RFC 4122.
    712  *
    713  */
     709/** Generate a new pseudo-random UUID compliant with RFC 4122 */
    714710void gpt_set_random_uuid(uint8_t *uuid)
    715711{
     
    718714        for (size_t i = 0; i < 16; i++)
    719715                uuid[i] = random();
     716
     717        /*
     718         * Set version (stored in bits 4-7 of seventh byte) to 4 (random
     719         * UUID) and bits 6 and 7 of ninth byte to 0 and 1 respectively -
     720         * according to RFC 4122, section 4.4.
     721         */
     722        uuid[6] &= 0x0f;
     723        uuid[6] |= (0x4 << 4);
     724        uuid[8] &= 0x3f;
     725        uuid[8] |= (1 << 7);
    720726}
    721727
Note: See TracChangeset for help on using the changeset viewer.