diff options
author | Leah Rowe <leah@libreboot.org> | 2023-01-28 12:23:10 +0000 |
---|---|---|
committer | Leah Rowe <leah@libreboot.org> | 2023-01-28 12:24:50 +0000 |
commit | c822033beedc7765947f5e9332ee842778c5a7fb (patch) | |
tree | 8b41f454714024bdab2adb827012a00b06204400 | |
parent | 0f4852450caaee38ccfde2dc1727b0c6cf5f9fbd (diff) |
util/nvmutil: simplify rhex()
don't use malloc(). instead, just load random bytes
into a uint64_t
-rw-r--r-- | util/nvmutil/nvmutil.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/util/nvmutil/nvmutil.c b/util/nvmutil/nvmutil.c index bc5859f4..e7c9f152 100644 --- a/util/nvmutil/nvmutil.c +++ b/util/nvmutil/nvmutil.c @@ -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 |