| Index: base/guid_posix.cc
|
| diff --git a/base/guid_posix.cc b/base/guid_posix.cc
|
| index 1b6d56fdea2d2ce6702826487c3a4595623eef83..9681b084fa300b204f9c80afd01b1c6d3a14f63c 100644
|
| --- a/base/guid_posix.cc
|
| +++ b/base/guid_posix.cc
|
| @@ -11,6 +11,20 @@ namespace base {
|
|
|
| std::string GenerateGUID() {
|
| uint64 sixteen_bytes[2] = { base::RandUint64(), base::RandUint64() };
|
| +
|
| + // Set the GUID to version 4 as described in RFC 4122, section 4.4.
|
| + // The format of GUID version 4 must be xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx,
|
| + // where y is one of [8, 9, A, B].
|
| +
|
| + // Clear the version bits and set the version to 4:
|
| + sixteen_bytes[0] &= 0xffffffffffff0fffULL;
|
| + sixteen_bytes[0] |= 0x0000000000004000ULL;
|
| +
|
| + // Set the two most significant bits (bits 6 and 7) of the
|
| + // clock_seq_hi_and_reserved to zero and one, respectively:
|
| + sixteen_bytes[1] &= 0x3fffffffffffffffULL;
|
| + sixteen_bytes[1] |= 0x8000000000000000ULL;
|
| +
|
| return RandomDataToGUIDString(sixteen_bytes);
|
| }
|
|
|
|
|