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.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/util/nvmutil/nvmutil.c b/util/nvmutil/nvmutil.c
index e16b227c..c069cc6e 100644
--- a/util/nvmutil/nvmutil.c
+++ b/util/nvmutil/nvmutil.c
@@ -930,8 +930,9 @@ rhex(void)
{
static size_t n = 0;
static uint8_t rnum[12];
+ int max_retries;
- if (!n) {
+ for (max_retries = 0; max_retries < 50 && !n; max_retries++) {
n = sizeof(rnum);
#ifdef NVMUTIL_ARC4RANDOM_BUF
arc4random_buf(rnum, n);
@@ -941,6 +942,9 @@ rhex(void)
#endif
}
+ if (!n)
+ err(ECANCELED, "Randomisation failure");
+
return (uint16_t)(rnum[--n] & 0xf);
}