diff options
Diffstat (limited to 'util')
| -rw-r--r-- | util/nvmutil/nvmutil.c | 6 |
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); } |
