diff --git a/src/flt_spoe.c b/src/flt_spoe.c
index bcdec08..df080d8 100644
--- a/src/flt_spoe.c
+++ b/src/flt_spoe.c
@@ -257,33 +257,8 @@
 static char *
 generate_pseudo_uuid()
 {
-	char *uuid;
-	uint32_t rnd[4] = { 0, 0, 0, 0 };
-	uint64_t last = 0;
-	int byte = 0;
-	uint8_t bits = 0;
-	unsigned int rand_max_bits = my_flsl(RAND_MAX);
-
-	if ((uuid = calloc(1, 37)) == NULL)
-		return NULL;
-
-	while (byte < 4) {
-		while (bits < 32) {
-			last |= (uint64_t)ha_random() << bits;
-			bits += rand_max_bits;
-		}
-		rnd[byte++] = last;
-		last >>= 32u;
-		bits  -= 32;
-	}
-	snprintf(uuid, 37, "%8.8x-%4.4x-%4.4x-%4.4x-%12.12llx",
-			     rnd[0],
-			     rnd[1] & 0xFFFF,
-			     ((rnd[1] >> 16u) & 0xFFF) | 0x4000,  // highest 4 bits indicate the uuid version
-			     (rnd[2] & 0x3FFF) | 0x8000,  // the highest 2 bits indicate the UUID variant (10),
-			     (long long)((rnd[2] >> 14u) | ((uint64_t) rnd[3] << 18u)) & 0xFFFFFFFFFFFFull
-			);
-	return uuid;
+	ha_generate_uuid(&trash);
+	return trash.area;
 }
 
 
diff --git a/src/sample.c b/src/sample.c
index 088da41..d602887 100644
--- a/src/sample.c
+++ b/src/sample.c
@@ -3328,30 +3328,7 @@
 static int smp_fetch_uuid(const struct arg *args, struct sample *smp, const char *kw, void *private)
 {
 	if (args[0].data.sint == 4 || !args[0].type) {
-		uint32_t rnd[4] = { 0, 0, 0, 0 };
-		uint64_t last = 0;
-		int byte = 0;
-		uint8_t bits = 0;
-		unsigned int rand_max_bits = my_flsl(RAND_MAX);
-
-		while (byte < 4) {
-			while (bits < 32) {
-				last |= (uint64_t)ha_random() << bits;
-				bits += rand_max_bits;
-			}
-			rnd[byte++] = last;
-			last >>= 32u;
-			bits  -= 32;
-		}
-
-		chunk_printf(&trash, "%8.8x-%4.4x-%4.4x-%4.4x-%12.12llx",
-			     rnd[0],
-			     rnd[1] & 0xFFFF,
-			     ((rnd[1] >> 16u) & 0xFFF) | 0x4000,  // highest 4 bits indicate the uuid version
-			     (rnd[2] & 0x3FFF) | 0x8000,  // the highest 2 bits indicate the UUID variant (10),
-			     (long long)((rnd[2] >> 14u) | ((uint64_t) rnd[3] << 18u)) & 0xFFFFFFFFFFFFull
-			);
-
+		ha_generate_uuid(&trash);
 		smp->data.type = SMP_T_STR;
 		smp->flags = SMP_F_VOL_TEST | SMP_F_MAY_CHANGE;
 		smp->data.u.str = trash;
diff --git a/src/standard.c b/src/standard.c
index 5ccf447..e0ea832 100644
--- a/src/standard.c
+++ b/src/standard.c
@@ -4640,6 +4640,31 @@
 	}
 }
 
+/* Generates an RFC4122 UUID into chunk <output> which must be at least 37
+ * bytes large.
+ */
+void ha_generate_uuid(struct buffer *output)
+{
+	uint32_t rnd[4];
+	uint64_t last;
+
+	last = ha_random64();
+	rnd[0] = last;
+	rnd[1] = last >> 32;
+
+	last = ha_random64();
+	rnd[2] = last;
+	rnd[3] = last >> 32;
+
+	chunk_printf(output, "%8.8x-%4.4x-%4.4x-%4.4x-%12.12llx",
+	             rnd[0],
+	             rnd[1] & 0xFFFF,
+	             ((rnd[1] >> 16u) & 0xFFF) | 0x4000,  // highest 4 bits indicate the uuid version
+	             (rnd[2] & 0x3FFF) | 0x8000,  // the highest 2 bits indicate the UUID variant (10),
+	             (long long)((rnd[2] >> 14u) | ((uint64_t) rnd[3] << 18u)) & 0xFFFFFFFFFFFFull);
+}
+
+
 /*
  * Local variables:
  *  c-indent-level: 8
