[PATCH] ipcpd: Use random buffer for flat address

  • From: Dimitri Staessens <dimitri@ouroboros.rocks>
  • To: ouroboros@xxxxxxxxxxxxx
  • Date: Thu, 17 Feb 2022 19:18:08 +0100

Less code, and less chance of a collision.

Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks>
---
 src/ipcpd/unicast/addr-auth/flat.c | 19 ++++---------------
 1 file changed, 4 insertions(+), 15 deletions(-)

diff --git a/src/ipcpd/unicast/addr-auth/flat.c 
b/src/ipcpd/unicast/addr-auth/flat.c
index af245a5d..061cb01f 100644
--- a/src/ipcpd/unicast/addr-auth/flat.c
+++ b/src/ipcpd/unicast/addr-auth/flat.c
@@ -29,19 +29,11 @@
 #define OUROBOROS_PREFIX "flat-addr-auth"
 
 #include <ouroboros/logs.h>
-#include <ouroboros/errno.h>
-#include <ouroboros/time_utils.h>
-#include <ouroboros/utils.h>
+#include <ouroboros/random.h>
 
 #include "ipcp.h"
 #include "flat.h"
 
-#include <time.h>
-#include <stdlib.h>
-#include <math.h>
-#include <string.h>
-#include <assert.h>
-
 #define NAME_LEN 8
 
 struct {
@@ -75,13 +67,10 @@ int flat_fini(void)
 
 uint64_t flat_address(void)
 {
-        struct timespec t;
-        uint32_t        addr;
+        uint32_t addr = INVALID_ADDRESS;
 
-        clock_gettime(CLOCK_REALTIME, &t);
-        srand(t.tv_nsec);
-
-        addr = (rand() % (RAND_MAX - 1) + 1) & 0xFFFFFFFF;
+        while (addr == INVALID_ADDRESS)
+                random_buffer(&addr,sizeof(addr));
 
         return addr;
 }
-- 
2.35.1


Other related posts:

  • » [PATCH] ipcpd: Use random buffer for flat address - Dimitri Staessens