util/nvmutil: simplify rhex()

don't use malloc(). instead, just load random bytes
into a uint64_t
fsdg20230625
Leah Rowe 2023-01-28 12:23:10 +00:00
parent 0f4852450c
commit c822033bee
1 changed files with 5 additions and 8 deletions

View File

@ -256,22 +256,19 @@ uint8_t
rhex(void) rhex(void)
{ {
static int rfd = -1; static int rfd = -1;
static uint8_t *rbuf = NULL; static uint64_t rnum = 0;
static size_t rindex = 12; static size_t rindex = 8;
if (rindex == 12) { if (rindex == 8) {
rindex = 0; rindex = 0;
if (rbuf == NULL)
if ((rbuf = (uint8_t *) malloc(BUFSIZ)) == NULL)
err(errno, NULL);
if (rfd == -1) if (rfd == -1)
if ((rfd = open("/dev/urandom", O_RDONLY)) == -1) if ((rfd = open("/dev/urandom", O_RDONLY)) == -1)
err(errno, "/dev/urandom"); err(errno, "/dev/urandom");
if (read(rfd, rbuf, 12) == -1) if (read(rfd, (uint8_t *) &rnum, 8) == -1)
err(errno, "/dev/urandom"); err(errno, "/dev/urandom");
} }
return rbuf[rindex++] & 0xf; return ((uint8_t *) &rnum)[rindex++] & 0xf;
} }
void void