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)
{
static int rfd = -1;
static uint8_t *rbuf = NULL;
static size_t rindex = 12;
static uint64_t rnum = 0;
static size_t rindex = 8;
if (rindex == 12) {
if (rindex == 8) {
rindex = 0;
if (rbuf == NULL)
if ((rbuf = (uint8_t *) malloc(BUFSIZ)) == NULL)
err(errno, NULL);
if (rfd == -1)
if ((rfd = open("/dev/urandom", O_RDONLY)) == -1)
err(errno, "/dev/urandom");
if (read(rfd, rbuf, 12) == -1)
if (read(rfd, (uint8_t *) &rnum, 8) == -1)
err(errno, "/dev/urandom");
}
return rbuf[rindex++] & 0xf;
return ((uint8_t *) &rnum)[rindex++] & 0xf;
}
void