summaryrefslogtreecommitdiff
path: root/util/nvmutil/nvmutil.c
diff options
context:
space:
mode:
Diffstat (limited to 'util/nvmutil/nvmutil.c')
-rw-r--r--util/nvmutil/nvmutil.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/util/nvmutil/nvmutil.c b/util/nvmutil/nvmutil.c
index a023a48a..8f422eb7 100644
--- a/util/nvmutil/nvmutil.c
+++ b/util/nvmutil/nvmutil.c
@@ -932,18 +932,16 @@ rhex(void)
static uint8_t rnum[12];
int max_retries;
- for (max_retries = 0; max_retries < 50 && !n; max_retries++) {
- n = sizeof(rnum);
#ifdef NVMUTIL_ARC4RANDOM_BUF
- arc4random_buf(rnum, n);
+if (!n) {
+ n = sizeof(rnum);
+ arc4random_buf(rnum, n);
+}
#else
+ for (max_retries = 0; max_retries < 50 && !n; max_retries++)
n = (size_t)read_gbe_file_exact(urandom_fd,
- rnum, n, 0, rname, NULL);
-#endif
- }
-
-#ifndef NVMUTIL_ARC4RANDOM_BUF
- if (!n)
+ rnum, sizeof(rnum), 0, rname, NULL);
+ if (!n || n > sizeof(rnum))
err(ECANCELED, "Randomisation failure");
#endif