From be9ac7cac95fcbcf6fb17eb880eda53fb89cda3a Mon Sep 17 00:00:00 2001
From: Costa Tsaousis <costa@netdata.cloud>
Date: Mon, 31 Mar 2025 11:34:12 +0300
Subject: [PATCH] use v4 UUIDs (#20002)

* use v4 UUIDs

* added comments to UUID generations
---
 src/daemon/machine-guid.c         | 2 +-
 src/libnetdata/os/uuid_generate.c | 3 +++
 src/web/api/v1/api_v1_manage.c    | 2 +-
 3 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/daemon/machine-guid.c b/src/daemon/machine-guid.c
index 963bd239bc..6af4c3f988 100644
--- a/src/daemon/machine-guid.c
+++ b/src/daemon/machine-guid.c
@@ -168,7 +168,7 @@ static ND_MACHINE_GUID machine_guid_get_or_create(void) {
     if (UUIDiszero(h.uuid)) {
         // If the status file does not contain a GUID, generate a new one.
         nd_log(NDLS_DAEMON, NDLP_INFO, "MACHINE_GUID: generating a new GUID");
-        uuid_generate_time(h.uuid.uuid);
+        uuid_generate(h.uuid.uuid);
     }
     else
         nd_log(NDLS_DAEMON, NDLP_INFO, "MACHINE_GUID: got previous GUID from daemon status file");
diff --git a/src/libnetdata/os/uuid_generate.c b/src/libnetdata/os/uuid_generate.c
index 6019f88444..466b53020b 100644
--- a/src/libnetdata/os/uuid_generate.c
+++ b/src/libnetdata/os/uuid_generate.c
@@ -29,6 +29,8 @@ void os_uuid_generate_time(void *out) {
 #endif
 
 void os_uuid_generate(void *out) {
+    // IMPORTANT: this generates a UUIDv4, which is random
+    // and falls back to uuid_generate_time() if high resolution random generated is not available
     uuid_generate(out);
 }
 
@@ -37,6 +39,7 @@ void os_uuid_generate_random(void *out) {
 }
 
 void os_uuid_generate_time(void *out) {
+    // IMPORTANT: this generates a UUIDv1, which is not random and may suffer from collisions
     uuid_generate_time(out);
 }
 
diff --git a/src/web/api/v1/api_v1_manage.c b/src/web/api/v1/api_v1_manage.c
index a7f67304f7..a1a0e03872 100644
--- a/src/web/api/v1/api_v1_manage.c
+++ b/src/web/api/v1/api_v1_manage.c
@@ -35,7 +35,7 @@ static char *get_mgmt_api_key(void) {
     if(!guid[0]) {
         nd_uuid_t uuid;
 
-        uuid_generate_time(uuid);
+        uuid_generate(uuid);
         uuid_unparse_lower(uuid, guid);
         guid[GUID_LEN] = '\0';